SQL Server 日期函数 集合DATEADD,DATEDIFF,DATENAME,DATEPART

时间:2021-12-13 01:45:42

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 pubsGOSELECT DATEADD(day, 21, pubdate) AS timeframeFROM titlesGO
  
  

确定在 pubs 数据库中标题发布日期和当前日期间的天数。

USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO

    
    
 

从 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