内容显示页
 
类别:数据库+SQL | 浏览(3520) | 2007-8-7 23:22:48

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'

日期部分缩写
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
weekdaydw
Hourhh
minutemi, n
secondss, s
millisecondms
 
以上这个表如果你会的语言多的话可能会觉得太乱了,
各种语言有些地方是不一样的,但不知道您有没有发现,
不管什么语言,
他们都可以直接用全称而不必非要用缩写.这个我比较喜欢,什么时候不会写就直接用全称.
原创作者:柳永法(yongfa365)'Blog

引用本页地址:http://www.yongfa365.com/item/SQL-Server-DATEADD-DATEDIFF-DATENAME-DATEPART-yongfa365.html
 
 
相关链接
 
网友评论:
1 匿名网友 - 2007-9-21 17:29:57
您好,柳老师
我是一个初级的。NET程序员
昨天我碰到了一个非常复杂的SQL问题啊
都2天了,一直做不出来啊,真的太苦恼了阿
题目是这样的阿
create table WWW(ID int, Distance varchar(50),Time datetime)
insert WWW select 1,'17:00 - 21:00','2005/01/24 16:20'
union all select 2,'21:00 - 1:00','2005/01/23 22:45'
union all select 3,'1:00 - 4:00','2005/01/23 0:30'
union all select 4,'4:00- 8:30','2005/01/21 4:28'
union all select 5,'8:30 - 13:00','2005/01/20 13:22'
union all select 6,'13:00 - 5:00','2005/01/19 20:30'
union all select 7,'13:00 - 17:00','2005/01/19 18:23'
union all select 8,'17:00 - 21:00','2005/01/18 9:14'
union all select 9,'21:00- 2:30','2005/01/18 18:04'
go

要把它显示成

選時段 Mon Tue Wed Thu Fri Sat Sun Total
-------------- ----- ----- ----- ----- ----- ------ ---- -------
[5pm - 9pm) 0 1 2 0 0 0 0 3
[9pm - 1am) 0 0 0 0 0 0 2 2
[1am - 4am) 0 0 0 0 0 0 0 0
[4am - 8:30am) 0 0 0 0 1 0 0 1
[8:30am - 1pm) 0 1 0 0 0 0 0 1
[1pm - 5pm) 1 0 0 1 0 0 0 2
Total 1 2 2 1 1 0 2 9


我一直都做不出来啊,如果您在百忙中能帮我解答的话,请把SQL语句法到我的邮箱中去阿,感激不尽啊!
 
2 匿名网友 - 2007-9-21 17:31:38
我的邮箱是csy0703@126.com

谢谢
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
专题(3)
 
.Net + C#(41)
 
ASP+VBS(153)
 
 
 
Linux(10)
 
 
 
web 2.0(24)
 
 
 
 
 
心程(59)
 
生活(80)
 
 
     

Power by :柳永法(yongfa365)'Blog | Model by :hibaidu | CSS by:众网友 | 京ICP备07011491号  QQ:64049027  E-mail:64049027qq.com

本空间赞助商:北京中科兴联信息技术有限公司