sql-datefirst-datepart

 

SET DATEFIRST

将一周的第一天设置为从 1 7 之间的一个数字。

通过select @@datefirst 可以查看当前的设置

这个@@datefirst是可以修改的:

-- SET DATEFIRST to U.S. English default value of 7.
SET DATEFIRST 7
SELECT CAST('99-1-1' AS datetime), DATEPART(dw, '99-1-1')
根据sql server 所用语言的不同,汉语用99-1-1 英语用1/1/99
-- January 1, 1999 is a Friday. Because the U.S. English default
-- specifies Sunday as the first day of the week, DATEPART of 1/1/99 
-- (Friday) yields a value of 6, because Friday is the sixth day of the 
-- week when starting with Sunday as day 1.

1999-1-1这天虽然是星期五,但按照周日是一周中的第一天的说法,周五就是一周的第六天。

 

 

 

SET DATEFIRST 3
-- Because Wednesday is now considered the first day of the week,
-- DATEPART should now show that 1/1/99 (a Friday) is the third day of the -- week. The following DATEPART function should return a value of 3.
SELECT CAST('1/1/99' AS datetime), DATEPART(dw, '1/1/99')
GO
set  datefirst 3--星期三是一周中的第一天
select cast('99-1-1' as datetime), datepart(dw,'99-1-1')
--周五就是一周中的第三天,依次是周三,周四,周五

 

+++++++++++++++

DATEPART

返回代表指定日期的指定日期部分的整数。
这句话的意思是说指定日期,如07-9-20,后面的指定日期部分是 datepart
select datepart(dw,'08-9-20')


语法

DATEPART ( datepart , date )

参数

datepart

是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

日期部分

缩写

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

 

week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。

weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1Saturday = 7weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定一星期中的哪一天是这周的第一天


date

是返回 datetime smalldatetime 值或日期格式字符串的表达式。对 1753 1 1 日之后的日期用datetime 数据类型。更早的日期存储为字符数据。当输入 datetime 值时,始终将其放入引号中。因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0

如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 2049 (默认),则 49 被解释为 20492050 被解释为 1950为避免模糊,请使用四位数的年份

返回类型

int

注释

DAYMONTH、和 YEAR 函数分别是 DATEPART(dd, date)DATEPART(mm, date)、和 DATEPART(yy, date) 的同义词。

示例

GETDATE 函数返回当前日期;然而,比较时并不总是需要完整的日期信息(通常只是对日期的一部分进行比较)。此示例显示 GETDATE DATEPART 的输出。

SELECT GETDATE() AS 'Current Date'
GO

下面是结果集:

Current Date                
--------------------------- 
Feb 18 1998 11:46PM         
 
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO

下面是结果集:

Month Number 
------------ 
2            

此示例假设日期是 5 29 日。

SELECT DATEPART(month, GETDATE())
GO

下面是结果集:

----------- 
5           
 
(1 row(s) affected)

在此示例中,以数字表示日期。注意:SQL Server 0 解释为 01/01/1900

SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)

下面是结果集:

----- ------ ------
1     1      1900


posted @ 2008-09-20 20:26  shuang  阅读(797)  评论(0)    收藏  举报