SQL Server 日期函数 集合DATEADD,DATEDIFF,DATENAME,DATEPART(转)
今日使用时遇到,记下备忘:
SQL Server 里的日期和时间函数,因为在这方面总是出问题,所以总结一下,本人主要用到的是DATEPART(month, GETDATE()) ,这个东西在ACCESS里可以直接day(now())就可以,可惜,SQL Server里的day()是不支持参数的.
SQL Server 里的日期和时间函数
这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。
下表列出日期和时间函数以及它们的确定性属性。
函数 | 确定性 |
---|---|
DATEADD | 具有确定性 |
DATEDIFF | 具有确定性 |
DATENAME | 不具有确定性 |
DATEPART | 除了用作 DATEPART (dw, date) 外都具有确定性。dw 是工作日的日期部分,取决于由设置每周第一天的 SET DATEFIRST 所设置的值。 |
DAY | 具有确定性 |
GETDATE | 不具有确定性 |
GETUTCDATE | 不具有确定性 |
MONTH | 具有确定性 |
YEAR | 具有确定性 |
确定性函数和非确定性函数
所有的函数都是确定性或非确定性的:
- 在使用特定的输入值集调用确定性函数的任何时候,它们总是返回相同的结果。
- 在每次使用特定的输入值集调用非确定性函数时,它们可能返回不同的结果。
函数是否为确定性函数或非确定性函数称为函数的确定性。
例如,DATEADD 内置函数是确定性函数,因为对于其三个参数的任何给定参数值集总是返回相同的结果。GETDATE 不是确定性函数,因为总是使用相同的参数唤醒调用它,而它在每次执行时返回结果都不同。
打印出 pubs 数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21 天。
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
确定在 pubs 数据库中标题发布日期和当前日期间的天数。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
从 GETDATE 返回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
GETDATE 函数返回当前日期;然而,比较时并不总是需要完整的日期信息(通常只是对日期的一部分进行比较)。
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
日期部分 | 缩写 |
---|---|
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 |
以上这个表如果你会的语言多的话可能会觉得太乱了,
各种语言有些地方是不一样的,但不知道您有没有发现,
不管什么语言,
他们都可以直接用全称而不必非要用缩写.这个我比较喜欢,什么时候不会写就直接用全称.
原创作者:柳永法(yongfa365)'Blog