代码改变世界

SQL 日期操作函数

  音乐让我说  阅读(405)  评论(0编辑  收藏  举报

代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
select dateDiff(month,'2010-03-01','2010-05-31')    --参数:1.表示日期部分   2.表示开始日期    3.表示结束日期        结果为:2
 
select dateDiff(month,'2010-03-01','2009-05-31')    --结果为:-10
 
select dateDiff(year,'2009-01-01','2010-12-31')     --结果为:1
 
select datediff(day,'2004-09-01','2004-09-18')      --结果为:17    (!!!!!!注意)
 
 
select dateDiff(m,0,'1901-01-01')   --返回12
 
select dateAdd(m,12,0)  --返回1901-01-01 00:00:00 即1900-01-01 00:00:00 的月份加12个月
 
select dateAdd(m,12,5)  --返回1901-01-06 00:00:00 即1900-01-01 00:00:00 的月份加12个月,日加上5天
 
 
------------------------------------------------------------------------------------------------------------
 
select dateAdd(month,5,'2010-02-15')                --参数:1.表示日期部分   2.表示要增加的数量  3.要操作的日期    结果为:2010-07-15 00:00:00.000
 
select dateAdd(month,-5,'2010-02-15')               --结果为:2009-09-15 00:00:00.000
 
------------------------------------------------------------------------------------------------------------
 
select dateName(weekday,'2004-10-15')               --结果为:星期五
 
select dateName(week,'2010-01-03')                  --结果为:2,本年第几周          
 
select convert(varchar(20),getdate(),23)            --结果为:2010-03-09           
 
select convert(varchar(20),getdate(),108)           --结果为:09:44:39
 
------------------------------------------------------------------------------------------------------------
 
select dateDiff(wk,0,'1900-01-01')                      --结果为0,说明1900-01-01是记录以来的第一周
 
select dateAdd(wk,dateDiff(wk,0,getdate()),0)           --是求本周一的日期和时间
 
select dateAdd(wk,dateDiff(wk,0,getdate()),6)           --是求本周日的日期和时间
 
select convert(varchar(20),dateAdd(wk,dateDiff(wk,0,getdate()),0),23)           --是求本周一的日期
 
select convert(varchar(20),dateAdd(wk,dateDiff(wk,0,getdate()),6),23)           --是求本周日的日期
 
select convert(varchar(20),getdate(),23) + '_' + convert(varchar(2),datepart(hour,getdate())) + '-' + convert(varchar(2),datepart(minute,getdate())) + '-' + convert(varchar(2),datepart(second,getdate()))   -- 结果为:2010-07-30_15-11-42
 
 
--统计本周过生日的人数,提示本周是从星期一开始的
select count(Id)
from HRUserInfo
where dateAdd(year,dateDiff(year,userBirthday,getDate()),userBirthday)
    between dateAdd(day,(dateDiff(day,0,getDate())/7*7),0)
         and dateAdd(day,(dateDiff(day,0,getDate())/7*7),0) + 6;
 
--统计本周过生日的人数,提示本周是从星期天开始的
select count(Id)
from HRUserInfo
where dateAdd(year,dateDiff(year,userBirthday,getDate()),userBirthday)
    between dateAdd(day,(dateDiff(day,0,getDate())/7*7)-1,0)
         and dateAdd(day,(dateDiff(day,0,getDate())/7*7)-1,0) + 6;
 
 
 
 
 
set nocount on
 
 
--查询日期月包含的天数
CREATE FUNCTION DaysInMonth ( @date datetime ) Returns int
AS
BEGIN
RETURN Day(dateadd(mi,-3,DATEADD(m, DATEDIFF(m,0,@date)+1,0)))
END
go
select dbo.DaysInMonth('2010-02-01')

 

等待更新...

点击右上角即可分享
微信分享提示