MSSQL中使用日期格式的技巧

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函数。

数据库标签