DATEPART (Transact-SQL)

 

DATEPART (Transact-SQL)

返回表示指定 date 的指定 datepart 的整数。

有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。有关日期和时间数据类型及函数共有的信息和示例,请参阅使用日期和时间数据

主题链接图标 Transact-SQL 语法约定

DATEPART ( datepart , date )
datepart

是将为其返回 integerdate(日期或时间值)的一部分。下表列出了所有有效的 datepart 参数。用户定义的变量等效项是无效的。

datepart 缩写

year

yy, yyyy

quarter

qq, q

month

mm, m

dayofyear

dy, y

day

dd, d

week

wk, ww

weekday

dw

hour

hh

minute

mi, n

second

ss, s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk, isoww

date

是一个表达式,可以解析为 timedatesmalldatetimedatetimedatetime2datetimeoffset 值。date 可以是表达式、列表达式、用户定义的变量或字符串文字。

为避免不确定性,请使用四位数年份。有关两位数年份的信息,请参阅two digit year cutoff 选项

int

每个 datepart 及其缩写都返回相同的值。

返回值因使用 SET LANGUAGE 和登录的默认语言设置的语言环境的不同而异。如果 date 为某些格式的字符串文字,则返回值由使用 SET DATEFORMAT 指定的格式来确定。当日期为日期或时间数据类型的列表达式时,SET DATEFORMAT 不影响返回值。

下表列出了所有 datepart 参数以及 SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') 语句返回的相应值。date 参数的数据类型为 datetimeoffset(7)nanosecond datepart 返回值的小数位数为 9 位 (.123456700),并且最后两位始终为 00。

datepart 返回值

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

周和工作日日期部分参数

datepart week (wk, ww) 或 weekday (dw) 时,返回值取决于使用 SET DATEFIRST 设置的值。

任何年份的 1 月 1 日都用来定义 week datepart 的起始数字,例如:DATEPART (wk, 'Jan 1, xxxx') = 1,其中 xxxx 为任意年份。

下表列出了针对每个不同的 SET DATEFIRST 参数,“2007-04-21”的 weekweekday datepart 返回值。2007 年的 1 月 1 日是星期天。2007 年 4 月 21 日是星期六。如果所选语言为美国英语,SET DATEFIRST 的默认值为 7,即星期天。

SET DATEFIRST 参数 返回的 周 返回的 工作日

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

年、月和日日期部分参数

DATEPART (year, date)、DATEPART (month, date) 和 DATEPART (day, date) 的返回值分别与函数 YEARMONTHDAY 的返回值相同。

ISO_WEEK datepart

ISO 8601 包括 ISO 周-日期系统,即周的编号系统。每周都与该周内星期四所在的年份关联。例如,2004 年第 1 周 (2004W01) 从 2003 年 12 月 29 日星期一到 2004 年 1 月 4 日星期天。一年中最大的周数可能为 52 或 53。这种编号方式通常用于欧洲国家,但其他国家/地区很少用到。

不同的国家/地区的编号系统可能不符合 ISO 标准。现在至少可能存在六种编号系统,如下表所示:

每周的第一天 一年的第一周包含 分配两次的周 使用的国家/地区

星期日

1 月 1 日,

第一个星期六,

其中有 1–7 天属于此年

美国

星期一

1 月 1 日,

第一个星期日,

其中有 1–7 天属于此年

大多数欧洲国家和英国

星期一

1 月 4 日,

第一个星期四,

其中有 4-7 天属于此年

ISO 8601,挪威和瑞典

星期一

1 月 7 日,

第一个星期一,

7 天均属于此年

 

星期三

1 月 1 日,

第一个星期二,

其中有 1–7 天属于此年

 

星期六

1 月 1 日,

第一个星期五,

其中有 1–7 天属于此年

 

TZoffset

TZoffset (tz) 返回的是分钟数(带有签名)。下面的语句返回了 310 分钟的时区偏移量。

复制代码
SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

如果 datepart 参数为 TZoffset (tz) 并且 date 参数不是 datetimeoffset 数据类型,则返回 NULL。

smalldatetime 日期参数

datesmalldatetime 时,秒的返回值为 00。

对不在日期参数中的日期部分返回默认值

如果 date 参数的数据类型没有指定的 datepart,将返回 datepart 的默认值。

例如,任意 date 数据类型的默认年-月-日都为 1900-01-01。下面的语句具有 datepart 的日期部分参数、date 的时间参数,并返回 1900, 1, 1, 1, 2

复制代码
SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');

time 数据类型的默认时-分-秒为 00:00:00。下面的语句具有 datepart 的时间部分参数、date 的日期参数,并返回 0, 0, 0

复制代码
SELECT DATEPART(hour, '2007-06-01')
    ,DATEPART(minute, '2007-06-01')
    ,DATEPART(second, '2007-06-01');

秒的小数形式

返回的秒的小数形式如下面的语句所示:

复制代码
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700

DATEPART 可用于选择列表 WHERE、HAVING、GROUP BY 和 ORDER BY 子句中。

下面的示例返回基准年。基准年对于日期计算非常有用。在下面的示例中,日期将指定为数字。请注意,SQL Server 将 0 解释为 1900 年 1 月 1 日。

复制代码
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值