1. SQL Server支持的日期格式
在MSSQL中,日期和时间类型相互关联,主要有以下几种类型:
date:仅包含日期信息
datetime:包含日期和时间信息,精确到秒
datetime2:包含日期和时间信息,精确到纳秒,比datetime类型更精确
smalldatetime:包含日期和时间信息,精确到分钟
time:仅包含时间信息
支持的日期格式也有很多种,下面详细介绍。
2. 日期格式示例
2.1 ISO日期格式
ISO日期格式是一组标准化的日期和时间格式,格式如下:
"YYYY-MM-DDTHH:MI:SS:sssZ"
其中:
YYYY代表年份,例如"2022"
MM代表月份,例如"04"
DD代表日,例如"08"
HH代表小时,介于00到23之间,例如"14"
MI代表分钟,介于00到59之间,例如"53"
SS代表秒数,介于00到59之间,例如"32"
sss代表毫秒数,介于000到999之间,例如"129"
Z代表时区,例如"UTC"或"+08:00"
在MSSQL中,可以使用CONVERT或CAST函数将日期转换为ISO格式:
SELECT CONVERT(VARCHAR, GETDATE(), 126)
输出结果类似于:
"2022-04-09T14:53:32.129Z"
2.2 常用日期格式
除了ISO日期格式,MSSQL还支持很多常用的日期格式,如下表所示:
格式 | 示例 | 说明 |
---|---|---|
101 | MM/DD/YYYY | 美国日期格式 |
102 | YYYY.MM.DD | ANSI日期格式 |
103 | DD/MM/YYYY | 英国日期格式 |
104 | DD.MM.YYYY | 德国日期格式 |
105 | DD-MM-YYYY | 意大利日期格式 |
106 | DD MMM YYYY | 法国日期格式 |
107 | MMM DD, YYYY | 月-日-年格式 |
108 | HH:MI:SS | 小时:分钟:秒格式 |
109 | MM-DD-YYYY | 美国日期格式(带时分秒) |
110 | MM-DD-YYYY | 美国日期格式 |
111 | YYYY/MM/DD | 日付け的ISO格式(年/月/日) |
112 | YYYYMMDD | 日付け的ISO格式(年月日) |
113 | DD MMM YYYY | 欧洲日期格式 |
114 | HH:MI:SS:sss | 小时:分钟:秒:毫秒格式 |
可以使用CONVERT或CAST函数将日期转换为上述日期格式:
SELECT CONVERT(VARCHAR, GETDATE(), 101)
输出结果类似于:
"04/09/2022"
2.3 自定义日期格式
如果以上格式不能满足需求,还可以使用自定义日期格式。自定义日期格式使用格式字符串来描述日期格式。下表列出了一些可用的格式字符串:
格式 | 说明 |
---|---|
yy | 两位数年份 |
yyyy | 四位数年份 |
MM | 月份,01到12 |
MMM | 月份缩写 |
dddd | 星期几 |
dd | 日期,01到31 |
hh | 小时,01到12 |
HH | 小时,00到23 |
mm | 分钟,00到59 |
ss | 秒数,00到59 |
可以使用CONVERT或CAST函数将日期转换为自定义格式:
SELECT CONVERT(VARCHAR, GETDATE(), 'yyyy-MM-dd HH:mm:ss')
输出结果类似于:
"2022-04-09 14:53:32"
3. 日期计算
在MSSQL中,可以使用DATEADD函数对日期进行加减运算,其语法如下:
DATEADD(datepart, number, date)
其中,datepart参数指定要添加的时间间隔类型,如year、quarter、month、day、hour等,number参数指定要添加的数值,date参数是要进行计算的日期,例如:
SELECT DATEADD(day, 10, '2022-04-09')
输出结果为:
"2022-04-19"
如果要进行日期比较,可以使用DATEDIFF函数,其语法如下:
DATEDIFF(datepart, startdate, enddate)
其中,datepart参数同上,startdate和enddate表示要比较的两个日期,例如:
SELECT DATEDIFF(day, '2022-04-01', '2022-04-09')
输出结果为:
8
4. 结论
MSSQL中日期格式有多种,可以根据需要选择合适的格式,也可以自定义日期格式。在进行日期计算时,可以使用DATEADD和DATEDIFF函数。