SQL string to date time
来源:互联网 发布:网络销售话术 编辑:程序博客网 时间:2024/06/10 08:03
在SQL server中经常会转换string到datetime类型,最常用的函数就是Convert。那么对Convert这个函数,不得不详细的研究一下。Convert这个函数的功能很强大,格式又很简单CONVERT ( data_type [ ( length ) ] , expression [ , style ] )。单就将string到datetime类型的转换就有很多样式。如: Convert(datetime, expression), Convert(varchar(10), expression, 110)。 这里需要注意的是最后这个style的字段,这个字段的主要作用是限制时间格式的样式。具体列表如下:
SQL server的基本样式有
Standard Date Formats
Date Format
Standard
SQL Statement
Sample Output
Mon DD YYYY 1
HH:MIAM (or PM)
Default
SELECT CONVERT(VARCHAR(20), GETDATE(), 100)
Jan 1 2005 1:29PM 1
MM/DD/YY
USA
SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY]
11/23/98
MM/DD/YYYY
USA
SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY]
11/23/1998
YY.MM.DD
ANSI
SELECT CONVERT(VARCHAR(8), GETDATE(), 2) AS [YY.MM.DD]
72.01.01
YYYY.MM.DD
ANSI
SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD]
1972.01.01
DD/MM/YY
British/French
SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY]
19/02/72
DD/MM/YYYY
British/French
SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY]
19/02/1972
DD.MM.YY
German
SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY]
25.12.05
DD.MM.YYYY
German
SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS [DD.MM.YYYY]
25.12.2005
DD-MM-YY
Italian
SELECT CONVERT(VARCHAR(8), GETDATE(), 5) AS [DD-MM-YY]
24-01-98
DD-MM-YYYY
Italian
SELECT CONVERT(VARCHAR(10), GETDATE(), 105) AS [DD-MM-YYYY]
24-01-1998
DD Mon YY 1
-
SELECT CONVERT(VARCHAR(9), GETDATE(), 6) AS [DD MON YY]
04 Jul 06 1
DD Mon YYYY 1
-
SELECT CONVERT(VARCHAR(11), GETDATE(), 106) AS [DD MON YYYY]
04 Jul 2006 1
Mon DD, YY 1
-
SELECT CONVERT(VARCHAR(10), GETDATE(), 7) AS [Mon DD, YY]
Jan 24, 98 1
Mon DD, YYYY 1
-
SELECT CONVERT(VARCHAR(12), GETDATE(), 107) AS [Mon DD, YYYY]
Jan 24, 1998 1
HH:MM:SS
-
SELECT CONVERT(VARCHAR(8), GETDATE(), 108)
03:24:53
Mon DD YYYY HH:MI:SS:MMMAM (or PM) 1
Default +
milliseconds
SELECT CONVERT(VARCHAR(26), GETDATE(), 109)
Apr 28 2006 12:32:29:253PM 1
MM-DD-YY
USA
SELECT CONVERT(VARCHAR(8), GETDATE(), 10) AS [MM-DD-YY]
01-01-06
MM-DD-YYYY
USA
SELECT CONVERT(VARCHAR(10), GETDATE(), 110) AS [MM-DD-YYYY]
01-01-2006
YY/MM/DD
-
SELECT CONVERT(VARCHAR(8), GETDATE(), 11) AS [YY/MM/DD]
98/11/23
YYYY/MM/DD
-
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]
1998/11/23
YYMMDD
ISO
SELECT CONVERT(VARCHAR(6), GETDATE(), 12) AS [YYMMDD]
980124
YYYYMMDD
ISO
SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD]
19980124
DD Mon YYYY HH:MM:SS:MMM(24h) 1
Europe default + milliseconds
SELECT CONVERT(VARCHAR(24), GETDATE(), 113)
28 Apr 2006 00:34:55:190 1
HH:MI:SS:MMM(24H)
-
SELECT CONVERT(VARCHAR(12), GETDATE(), 114) AS [HH:MI:SS:MMM(24H)]
11:34:23:013
YYYY-MM-DD HH:MI:SS(24h)
ODBC Canonical
SELECT CONVERT(VARCHAR(19), GETDATE(), 120)
1972-01-01 13:42:24
YYYY-MM-DD HH:MI:SS.MMM(24h)
ODBC Canonical
(with milliseconds)
SELECT CONVERT(VARCHAR(23), GETDATE(), 121)
1972-02-19 06:35:24.489
YYYY-MM-DDTHH:MM:SS:MMM
ISO8601
SELECT CONVERT(VARCHAR(23), GETDATE(), 126)
1998-11-23T11:25:43:250
DD Mon YYYY HH:MI:SS:MMMAM 1
Kuwaiti
SELECT CONVERT(VARCHAR(26), GETDATE(), 130)
28 Apr 2006 12:39:32:429AM 1
DD/MM/YYYY HH:MI:SS:MMMAM
Kuwaiti
SELECT CONVERT(VARCHAR(25), GETDATE(), 131)
28/04/2006 12:39:32:429AM
那么在什么情况下,我们需要字段呢?
大家也知道在SQL Server中,时间字符串的格式是各式各样的,就像上表所示那样。那SQL server怎么去识别这些样式的时间格式呢?在通常情况下(一般是USA或Default),SQL server会自己分析时间字符串的格式。如: Convert(varchar(10), ‘2009-01-01’), convert(varchar(10), ‘20090101’), convert(varchar(10), ‘2009/01/01’)。所以,你可以不用指定style这个字段。但是在Italian(没有试过German/ British/French)环境下, 你必须显示的指定这个字段来转换时间, 而且还必须是非-号分隔符的字符串。主要的原因在于像USA, Italian, ODBC都是使用-来分隔的,并且他们的相同位置上对于的时间类别又不尽相同。所以,时常会发生转换varchar到datetime类型,超出值范围的错误。所以需要特别注意。比较简单的方法就是用Replace函数把-号替换掉,如”2009-01-11” -> “20090111”,因为后者是ISO的格式,所以我们就可以比较容易的像其他style转换,即使在不同的语言环境中也没问题。但是唯一麻烦的就是你的字符格式必须很固定,不能一会儿年月日,一会儿日月年。最好的办法还是用convert(datetime, expression)方式直接转到datetime类型。但是这种方式是全格式的时间格式,也就是说你不能控制只想取天或是月,所以还需要在外面套上一层convert(type, convert(datetime, expression), style)。另外的建议是,当我们要生成时间字符串从远端机器传输的时候,最好使用ISO格式YYYYMMDD HH:mm:ss,这样便于服务器端的转换。
- SQL string to date time
- time value from 1970 to date string.
- String to java.sql.Date
- String 转化成java.sql.Date和java.sql.Time
- Java中的util.Date,sql.Date,sql.Time,String类型转换
- GPSTime To UTC Date Time
- SQL Server 中的日期转换 Convert date to string
- [note] date, timestamp & time string converter
- Joda-Time Date(jdk) String相互转换
- Java format date to String or String to date
- JS: Casting string to Date
- Go convert string to time
- java convert timestamp to date and time
- Date/Time Conversions Using SQL Server
- T-sql date/time format samples
- java中Date/Time/Timestamp对应sql
- java String转sql date
- string 转换为sql date
- Namespaces
- awk 教程
- 清除数据
- Correlation database
- Ajax Toolkit 简单配置和使用
- SQL string to date time
- awk 用法
- asp.net后台弹出框不刷新父页
- akw 和linux 命令
- SQL VIEW(视图)
- 2010.4.30 C# 字符串的修改
- J2ME基础
- gawk
- 网站统计分析