6.1. T-SQL 日期函数

以下是MS SQL Server中的日期函数列表。

  • GETDATE() 它将返回当前日期和时间。

  • DATEPART(datepart, datecolumnname) 它将返回日期或时间的一部分。

  • DATEADD(datepart, number, datecolumnname) 它将通过加或减日期和时间间隔显示日期和时间。

  • DATEDIFF(datepart, startdate, enddate) 它将显示两个日期之间的日期和时间。

  • CONVERT(datatype, expression, style) 它将以不同的格式显示日期和时间。

6.1.1. GETDATE() / getDate() / getdate()

备注

SQL 的关键字和函数名不区分大小写。所以,下文的函数名的写法将使用驼峰写法。

它将返回当前日期和时间。

select getdate() as now_time

6.1.2. datePart(datepart, datecolumnname)

它将返回日期或时间的一部分。

select DATEPART(YEAR,GETDATE()) as now_year

datepart

缩写

yy, yyyy , year

季度

qq, q

mm, m , month

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

注意

该篇章的所有 datepart 参数都是参考上表。

6.1.3. dateAdd(datepart, number, datecolumnname)

它将通过加(number为正)或减(number为负)日期和时间间隔显示日期和时间。

SELECT DATEADD(DAY,10,GETDATE()) AS ten_day_later_datetime
SELECT DATEADD(DAY,-10,GETDATE()) AS ten_day_before_datetime

6.1.4. DATEDIFF(datepart, startdate, enddate)

返回两个日期之间的时间。 (enddate-startdate的结果并转换为以datepart为单位的数值)

SELECT DATEDIFF(DAY,(SELECT DATEADD(DAY,10,GETDATE()) AS ten_day_later_datetime),GETDATE()) as diff_time
-- result is -10

6.1.5. CONVERT(datatype, expression, style)

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(没有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

select CONVERT(varchar(255),getdate(),110) as format_date