方法一:利用DATENAME
在SQL数据库中,DATENAME(datetype,date)函数的作用是从日期中提取指定部分数据,其返回类型是nvarchar.datetype类型见附表1.
SELECT DATENAME(year,GETDATE())+'-'+ DATENAME(MONTH,GETDATE())+'-'+ DATENAME(DAY,GETDATE()) SELECT DATENAME(yyyy,GETDATE())+'-'+ DATENAME(MM,GETDATE())+'-'+ DATENAME(dd,GETDATE())
方法二:利用CONVERT
CONVERT(type(length),date,style) 函数是把日期转换为新数据类型的通用函数,可以用不同的格式显示日期/时间数据。style类型见附表2,另附件3为CONVERT()用法
SELECT CONVERT(VARCHAR(20),YEAR(GETDATE())) +'-'+ CONVERT(VARCHAR(20),MONTH(GETDATE()))+'-'+ CONVERT(VARCHAR(20),DAY(GETDATE())) SELECT CONVERT(VARCHAR(20),GETDATE(),23)
下面说两种不能错误方法:
SELECT YEAR(GETDATE()) +'-'+ MONTH(GETDATE()) +'-'+ DAY(GETDATE()) SELECT DATEPART(yyyy,GETDATE())+'-'+ DATEPART(MM,GETDATE())+'-'+ DATEPART(dd,GETDATE())
因为YEAR(),MONTH(),DAY(),DATEPART()返回值都是INT类型,所以结果是相加
附表1
日期部分 |
缩写 |
year | yy, yyyy |
quarter | qq, q |
month | mm,m |
dayofyear | dy, y |
day | dd,d |
week | wk,ww |
weeekday | dw |
hour | hh |
minute | mi,n |
second | ss,s |
millisecond | ms |
附表2
style(2位表年份) | style(4位表年份) | Style 格式 |
100或0 | mon dd yyyy hh:miAM (或者 PM) | |
1 | 101 美国 | mm/dd/yy |
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 |
108或8或24 | hh:mm:ss(无年份月日) | |
109或9 | mon dd yyyy hh:mi:ss:mmmAM(或者 PM) | |
10 | 110 美国 | mm-dd-yy |
11 | 111 日本 | yy/mm/dd |
12 | 112 ISO | yymmdd |
113或13 欧洲默认 | dd mon yyyy hh:mm:ss:mmm(24h) | |
14 | 114 | hh:mi:ss:mmm(24h)(无年份月日) |
120或20 ODBC | yyyy-mm-dd hh:mi:ss(24h) | |
121或21或25 | yyyy-mm-dd hh:mi:ss.mmm(24h) | |
23 | yyyy-mm-dd | |
126 | yyyy-mm-ddThh:mm:ss.mmm(没有空格) | |
130 | dd mon yyyy hh:mi:ss:mmmAM | |
131 | dd/mm/yy hh:mi:ss:mmmAM |
附件3 CONVERT()用法
SELECT CONVERT(varchar(100), GETDATE(), 0)-- 08 25 2017 10:26AM SELECT CONVERT(varchar(100), GETDATE(), 100)--08 25 2017 10:26AM SELECT CONVERT(varchar(100), GETDATE(), 1)-- 08/25/17 SELECT CONVERT(varchar(100), GETDATE(), 101)--08/25/2017 SELECT CONVERT(varchar(100), GETDATE(), 2)-- 17.08.25 SELECT CONVERT(varchar(100), GETDATE(), 102)--2017.08.25 SELECT CONVERT(varchar(100), GETDATE(), 3)-- 25/08/17 SELECT CONVERT(varchar(100), GETDATE(), 103)--25/08/2017 SELECT CONVERT(varchar(100), GETDATE(), 4)-- 25.08.17 SELECT CONVERT(varchar(100), GETDATE(), 104)--25.08.2017 SELECT CONVERT(varchar(100), GETDATE(), 5)-- 25-08-17 SELECT CONVERT(varchar(100), GETDATE(), 105)--25-08-2017 SELECT CONVERT(varchar(100), GETDATE(), 6)-- 25 08 17 SELECT CONVERT(varchar(100), GETDATE(), 106)--25 08 2017 SELECT CONVERT(varchar(100), GETDATE(), 7)-- 08 25, 17 SELECT CONVERT(varchar(100), GETDATE(), 107)--08 25, 2017 SELECT CONVERT(varchar(100), GETDATE(), 8)-- 10:25:11 SELECT CONVERT(varchar(100), GETDATE(), 108)--10:25:11 SELECT CONVERT(varchar(100), GETDATE(), 9)-- 08 25 2017 10:25:54:397AM SELECT CONVERT(varchar(100), GETDATE(), 109)--08 25 2017 10:25:54:397AM SELECT CONVERT(varchar(100), GETDATE(), 10)-- 08-25-17 SELECT CONVERT(varchar(100), GETDATE(), 110)--08-25-2017 SELECT CONVERT(varchar(100), GETDATE(), 11)-- 17/08/25 SELECT CONVERT(varchar(100), GETDATE(), 111)--2017/08/25 SELECT CONVERT(varchar(100), GETDATE(), 12)-- 170825 SELECT CONVERT(varchar(100), GETDATE(), 112)--20170825 SELECT CONVERT(varchar(100), GETDATE(), 13)-- 25 08 2017 10:30:25:533 SELECT CONVERT(varchar(100), GETDATE(), 113)--25 08 2017 10:30:25:533 SELECT CONVERT(varchar(100), GETDATE(), 14)-- 10:31:18:553 SELECT CONVERT(varchar(100), GETDATE(), 114)--10:31:18:553 SELECT CONVERT(varchar(100), GETDATE(), 20)-- 2017-08-25 10:31:18 SELECT CONVERT(varchar(100), GETDATE(), 120)--2017-08-25 10:31:18 SELECT CONVERT(varchar(100), GETDATE(), 21)-- 2017-08-25 10:32:22.950 SELECT CONVERT(varchar(100), GETDATE(), 121)--2017-08-25 10:32:22.950 SELECT CONVERT(varchar(100), GETDATE(), 22)-- 08/25/17 10:32:22 AM SELECT CONVERT(varchar(100), GETDATE(), 23)-- 2017-08-25 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 8)-- 10:25:11 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 108)--10:25:11 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 24)-- 10:33:38 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 21)-- 2017-08-25 10:32:22.950 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 121)--2017-08-25 10:32:22.950 SELECT CONVERT(varchar(100), DATEADD(hh,12,GETDATE()), 25)-- 2017-08-25 10:33:49.947 SELECT CONVERT(varchar(100), GETDATE(), 126)--2017-08-25T10:34:39.913 SELECT CONVERT(varchar(100), GETDATE(), 130)--3 ?? ????? 1438 10:34:52:140AM SELECT CONVERT(varchar(100), GETDATE(), 131)--3/12/1438 10:35:01:460AM