sqlconvertdate
1. sql獲取時間函數convert(varchar(10),getdate(),111)
select convert(varchar(10),getdate(),111)
結果應該是2012/10/25 後面不帶 00:00:00的
你看到了00:00:00是因為你把這個值插入了一個datatime列裡面,後面的是自動補上的。
2. sql語句中的convert是什麼意思
CAST 和 CONVERT
將某種數據類型的表達式顯式轉換為另一種數據類型。CAST 和 CONVERT 提供相似的功能。
語法
使用 CAST:
CAST ( expression AS data_type )
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
參數
expression
是任何有效的 Microsoft® SQL Server™ 表達式。有關更多信息,請參見表達式。
data_type
目標系統所提供的數據類型,包括 bigint 和 sql_variant。不能使用用戶定義的數據類型。有關可用的數據類型的更多信息,請參見數據類型。
length
nchar、nvarchar、char、varchar、binary 或 varbinary 數據類型的可選參數。
style
日期格式樣式,藉以將 datetime 或 smalldatetime 數據轉換為字元數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型);或者字元串格式樣式,藉以將 float、real、money 或 smallmoney 數據轉換為字元數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型)。
SQL Server 支持使用科威特演算法的阿拉伯樣式中的數據格式。
在表中,左側的兩列表示將 datetime 或 smalldatetime 轉換為字元數據的 style 值。給 style 值加 100,可獲得包括世紀數位的四位年份 (yyyy)。
不帶世紀數位 (yy) 帶世紀數位 (yyyy)
標准
輸入/輸出**
- 0 或 100 (*) 默認值 mon dd yyyy hh:miAM(或 PM)
1 101 美國 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英國/法國 dd/mm/yy
4 104 德國 dd.mm.yy
5 105 義大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默認值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美國 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 歐洲默認值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 規范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 規范(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
3. 怎麼把sql date都轉換為string
使用類似下面的語句:
select Convert(varchar(10),getdate(),120)
注意裡面的 Convert() 函數。
1.定義和用法
CONVERT() 函數是把日期轉換為新數據類型的通用函數。
CONVERT() 函數可以用不同的格式顯示日期/時間數據。
2.語法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 規定目標數據類型(帶有可選的長度)。data_to_be_converted 含有需要轉換的值。style 規定日期/時間的輸出格式。
4. 在SQL中怎樣把字元型的數據轉換成日期型的呢
1、首先點擊「開始」——「Microsoft SQL Server 2005」——「Microsoft SQL Server Management Studio」。
5. 關於sql中 convert函數用法
convert是用來強制轉化數據類型的其語法是convert(數據類型,要轉化的值)SELECT[FixtureID]這個就不說了,(Opponents+'-'+CONVERT(varchar,FixtureDate,6))As FixtureCombo,(Opponents+'-'+CONVERT(varchar,FixtureDate,6))As FixtureCombo這部分是將Opponents、FixtrueDate查詢出來然後用"-"將兩列連在一起轉化的目的就是防止字元串連接符「+」操作兩種不同的數據類型出現語法錯誤
6. 如何將SQL中的datetime轉化為一個date類型的變數
使用convert函數,參數格式 CONVERT(VARCHAR(10),GETDATE(),110)
第二個參數為欄位名稱,最後一個參數為指定轉換格式
例: SELECT CONVERT(VARCHAR(10),GETDATE(),110)
檢索結果為:11-10-2015
7. SQL CONVERT()函數的問題
第三十一章 SQL函數 CONVERT
將給定表達式轉換為指定數據類型的函數。
CONVERT(datatype,expression[,format-code])
{fn CONVERT(expression,datatype)}
參數
expression - 要轉換的表達式。
datatype - 要將表達式轉換為的數據類型。
format - 可選-指定日期和時間格式的整數代碼,用於在日期/時間/時間戳數據類型和字元數據類型之間進行轉換。 此參數僅用於通用標量語法形式。
描述
這里描述了CONVERT函數的兩種不同實現。 兩者都將一種數據類型中的表達式轉換為另一種數據類型中的相應值。 兩者都執行日期和時間轉換。
注意:這兩個CONVERT實現中的參數以不同的順序表示。 第一個是與MS SQL Server兼容的通用 IRIS標量函數,它接受三個參數。 第二個是帶有兩個參數的 ODBC標量函數。 下面的文本將分別處理這兩種形式的CONVERT。
CONVERT(datatype,expression)支持流數據的轉換。 例如,可以將字元流欄位的內容轉換為數據類型為VARCHAR的字元串。
{fn CONVERT(expression,datatype)}不支持流數據的轉換; 指定要表達的流欄位將導致SQLCODE -37錯誤。
為兩個版本的CONVERT指定一個無效值將導致SQLCODE -141。
如果表達式沒有定義的數據類型(例如ObjectScript提供的主機變數),則其數據類型默認為字元串數據類型。
CONVERT(datatype,expression,format-code)
可以通過執行VARCHAR-to-VARCHAR轉換來截斷字元串,指定輸出字元串長度小於表達式字元串長度。
在使用CONVERT(或CAST)時,如果字元數據類型(如CHAR或VARCHAR)沒有指定長度,則默認的最大長度為30個字元。 如果二進制數據類型(如binary或VARBINARY)沒有指定長度,則默認的最大長度為30個字元。 否則,這些沒有指定長度的數據類型將被映射到一個1個字元的MAXLEN,如data types表所示。
可以執行BIT數據類型轉換。 允許的值為1、0或NULL。 如果指定任何其他值,IRIS將發出SQLCODE -141錯誤。 在下面的嵌入式SQL示例中,兩者都是一個NULL的BIT轉換:
ClassMethod Convert()
{
s a=""
&sql(
SELECT CONVERT(BIT,:a),
CONVERT(BIT,NULL)
INTO :x,:y)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
w !,"the NULL keyword is:",y
}
可選的format-code參數指定日期、datetime或時間格式。 該格式既可用於定義從日期/時間/時間戳數據類型轉換為字元串時的輸出,也可用於定義從字元串轉換為日期/時間/時間戳數據類型時的輸入。 支持以下格式代碼; 輸出兩位數年份的格式代碼列在第一列; 輸出四位數年或不輸出年的格式列在第二列:
Two-digit year codes Four-digit year codes Format
以下是日期和時間轉換的特性:
取值范圍:允許的日期范圍為0001-01-01 ~ 9999-12-31。
默認值:
將時間值轉換為TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME時,日期默認為1900-01-01。 注意,對於{fn CONVERT()},日期默認為1841-01-01。
將日期值轉換為TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME時,時間默認為00:00:00。
Default Format:如果沒有指定Format -code, CONVERT將嘗試從指定的值確定格式。 如果不能,則默認為格式代碼100。
兩位數年份:從00到49的兩位數年份轉換為21世紀的日期(2000到2049); 從50到99的兩位數年份轉換為20世紀的日期(1950到1999)。
分數秒:分數秒前可以加句號(.)或冒號(:)。 這些符號有不同的含義:
句點是默認值,可用於所有格式代碼。 句號表示標准分數; 因此,12:00:00.4表示十分之四秒,而12:00:00.004表示千分之四秒。 分數精度的位數沒有限制。
冒號只能用於以下格式代碼值:9/109、13/113、14/114、130和131。 冒號表示後面的數字是千分之一秒; 因此12:00:00:4表示四萬分之一秒(12:00:00.004)。 冒號後面的數字限制為3位。
當指定表達式的格式無效或格式與格式代碼不匹配時,將產生SQLCODE -141錯誤。 指定一個不存在的格式代碼將返回1900-01-01 00:00:00。
{fn CONVERT(expression,datatype)}
這是ODBC標量函數。 它支持以下ODBC顯式數據類型轉換。 必須使用「SQL_」關鍵字指定這種形式的CONVERT的數據類型轉換。 在下表中,有兩組轉換數據類型,第一組轉換數據值和數據類型,第二組轉換數據類型,但不轉換數據值:
Source Conversion
SQL_VARCHAR是標準的ODBC表示。 在轉換為SQL_VARCHAR時,日期和時間被轉換為相應的ODBC表示; 數字數據類型值轉換為字元串表示。 從SQL_VARCHAR轉換時,該值必須是有效的ODBC Time、Timestamp或Date表示。
當將時間值轉換為SQL_TIMESTAMP或SQL_POSIXTIME時,未指定的日期默認為1841-01-01。 注意,對於CONVERT(),日期默認為1900-01-01。
將date值轉換為SQL_TIMESTAMP或SQL_POSIXTIME時,時間默認為00:00:00。
在這種語法形式中,小數秒前面可以加句號(.)或冒號(:)。 這些符號有不同的含義。 句號表示標准分數; 因此,12:00:00.4表示十分之四秒,而12:00:00.004表示千分之四秒。 冒號表示接下來的是千分之一秒; 因此12:00:00:4表示千分之四秒。 冒號後面的數字限制為3位。
在轉換為整數數據類型或SQL_DOUBLE數據類型時,數據值(包括日期和時間)將轉換為數字表示。 對於SQL_DATE,這是自1841年1月1日以來的天數。 對於SQL_TIME,這是自午夜以來的秒數。 當遇到非數字字元時,輸入字元串將被截斷。 整數數據類型還截斷十進制數字,返回數字的整數部分。
{fn CONVERT(expression,datatype)}不支持流數據的轉換; 指定要表達的流欄位將導致SQLCODE -37錯誤。
轉換成任何數據類型的NULL仍然是NULL。
空字元串("),或任何非數字字元串值轉換如下:
SQL_VARCHAR和SQL_TIMESTAMP返回提供的值。
數字數據類型轉換為0(零)。
SQL_DATE和SQL_TIME轉換為NULL。
CONVERT 類方法
還可以使用CONVERT()方法調用執行數據類型轉換,使用" SQL_"關鍵字指定數據類型:
$SYSTEM.SQL.Functions.CONVERT(expression,convert-to-type,convert-from-type)
如下示例所示:
WRITE $SYSTEM.SQL.CONVERT(60945,"SQL_VARCHAR","SQL_DATE")
2007-11-11
示例
CONVERT() 示例
下面的示例使用標量語法形式的CONVERT。
下面的示例比較了使用DECIMAL和DOUBLE數據類型對小數的轉換:
SELECT CONVERT(DECIMAL,-123456789.0000123456789) AS DecimalVal,
CONVERT(DOUBLE,-123456789.0000123456789) AS DoubleVal
下面的示例將字元流欄位轉換為VARCHAR文本字元串。 它還使用CHAR_LENGTH顯示字元流欄位的長度:
SELECT Notes,CONVERT(VARCHAR(80),Notes) AS NoteText,CHAR_LENGTH(Notes) AS TextLen
FROM Sample.Employee WHERE Notes IS NOT NULL
下面的例子展示了幾種將出生日期欄位(DOB)轉換為格式化字元串的方法:
SELECT DOB,
CONVERT(VARCHAR(20),DOB) AS DOBDefault,
CONVERT(VARCHAR(20),DOB,100) AS DOB100,
CONVERT(VARCHAR(20),DOB,107) AS DOB107,
CONVERT(VARCHAR(20),DOB,114) AS DOB114,
CONVERT(VARCHAR(20),DOB,126) AS DOB126
FROM Sample.Person
默認格式和代碼100格式是相同的。 因為DOB欄位不包含時間值,所以顯示時間的格式(這里包括默認值100、114和126)提供一個零值,它表示12:00AM(午夜)。 代碼126格式提供了一個不包含空格的日期和時間字元串。
{fn CONVERT()} 示例
下面的示例使用了ODBC語法形式的CONVERT。
下面的嵌入式SQL示例將混合字元串轉換為整數。 IRIS在第一個非數字字元處截斷字元串,然後將結果數字轉換為規范形式:
ClassMethod Convert1()
{
s a="007 James Bond"
&sql(SELECT {fn CONVERT(:a, SQL_INTEGER)} INTO :x)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Convert1()
SQLCODE=0
the host variable is:7
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_TIMESTAMP數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp
FROM Sample.Person
生成的時間戳格式為「yyyy-mm-dd hh:mm:ss」。
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_INTEGER數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_INTEGER)} AS DOBtoInt
FROM Sample.Person
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_VARCHAR數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar
FROM Sample.Person
生成的字元串格式為:yyyy-mm-dd。