SQL 日期时间&字符串转换

威哥每次遇到sql时间取特定部分,比喻时间取年月日,去时分秒之类的时间转字符串操作时,总是记不住这些转换要点,总要去网上查查,这次威哥决定辛苦一点,自己总结好,写到自己的博客,其他童鞋们可以查阅时,威哥自己也可以查阅,哈哈哈。

GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate() 
用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:

Select Datename(year,GetDate())+'-'+Datename
(month,GetDate())+'-'+Datename(day,GetDate())

另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())

SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多数的情况我们只想得到他的日期部分,而不许要后面的时间。上一篇中提到用Datename()函数来截取拼接出不包含时间部分的日期,现在再说一种方法,更加简单的获取到不包含时间的日期!


使用Convert()函数:

select convert(char(10),GetDate(),120) as Date

* 第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:

100   mm dd yyyy

101   mm/dd/yyyy

102   yyyy.mm.dd

103   dd/mm/yyyy

106   dd mm yyyy

108   hh:mi:ss(时间)

111   yyyy/mm/dd

112   yyyymmdd

120   yyyy-mm-dd

 

SELECT CONVERT(varchar(100), GETDATE(), 0) 05  9 2011  9:12AM
 2  SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
 3 SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
 4 SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
 5 SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
 6 SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
 7 SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
 8 SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
 9 SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
10 SELECT CONVERT(varchar(100), GETDATE(), 9) 05  9 2011  9:13:14:670AM
11 SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
12 SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
13 SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
14 SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
15 SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
16 SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
17 SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
18 SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11  9:15:33 AM
19 SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
20 SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
21 SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
22 SELECT CONVERT(varchar(100), GETDATE(), 100) 05  9 2011  9:15AM
23 SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
24 SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
25 SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
26 SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
27 SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
28 SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
29 SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
30 SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
31 SELECT CONVERT(varchar(100), GETDATE(), 109) 05  9 2011  9:16:38:543AM
32 SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
33 SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
34 SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
35 SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
36 SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
37 SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
38 SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
39 SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
40 SELECT CONVERT(varchar(100), GETDATE(), 130)  6 ????? ??????? 1432  9:17:19:857AM
41 SELECT CONVERT(varchar(100), GETDATE(), 131)  6/06/1432  9:17:19:857AM

 

注意:比喻 Select Convert(char(10),GetDate(),120)  ,其中格式化:120 对应搜索出的时间格式是:yyyy-mm-dd,但是也和你给定的字符串大小范围有关,比喻如果搜索:SELECT CONVERT(varchar(100), GETDATE(), 120),得出来的是:类似2019-01-17 10:43:45 带时分秒的字符串显示。

如果只需要年月日部分,自己数好字符串的长度大小,比喻年月日可以写作:Select Convert(char(10),GetDate(),120),得出来就是正常的:2019-01-17这样的年月日显示。

你可能感兴趣的:(Sql)