【sql server】sql server日期函数大全

一,统计语句

1, 统计当前【>当天00点以后的数据】

SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111)   ORDER BY dateandtime DESC

 

2,统计本周

SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0

3,统计本月

SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0

4,统计当前

  1. SELECT * FROM 表 WHERE datediff(day,[dateadd],getdate())=0

     

  2. Select * From table with(nolock) Where Convert(varchar(10),[CreateTime],120) = Convert(varchar(10),getDate(),120)

     

二,时间函数

如图1所示,当前系统日期,时间

select getdate() 

2,dateadd在向指定日期加上一段时间的基础上,返回新的datetime值,例如:向日期加上2天

select dateadd(day,2,'2004-10-15')   --返回:2004-10-17 00:00:00.000

3,dateiff返回跨两个指定日期的日期和时间边界数

select datediff(day,'2004-09-01','2004-09-18')    --返回:17

4,datepart返回代表指定日期的指定日期部分的整数

SELECT DATEPART(month, '2004-10-15')   --返回 10

5,datename返回代表指定日期的指定日期部分的字符串

SELECT datename(weekday, '2004-10-15')   --返回:星期五

6,day(),month(),year() - 可以与datepart对照一下

  1. select 当前日期=convert(varchar(10),getdate(),120),

  2. select 当前时间=convert(varchar(8),getdate(),114),

  3. select datename(dw,'2004-10-15')

  4. select 本年第多少周=datename(week,'2004-10-15'),

  5. select 今天是周几=datename(weekday,'2004-10-15')

如图7所示,求相差天数

select   datediff(day,'2004-01-01',getdate()) 

8,一个月第一天的

SELECT   DATEADD(mm,   DATEDIFF(mm,0,getdate()),   0) 

9,本周的星期一

  1. SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

     

  2. select dateadd(wk,datediff(wk,0,getdate()),6)

     

10,一年的第一天

SELECT   DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)

11,季度的第一天

SELECT   DATEADD(qq,   DATEDIFF(qq,0,getdate()),   0)

12,当天的半夜

SELECT   DATEADD(dd,   DATEDIFF(dd,0,getdate()),   0)

13,上个月的最后一天

SELECT   dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),   0))

14,去年的最后一天

SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)) 

 

15,本月的最后一天

SELECT   dateadd(ms,-3,DATEADD(mm,   DATEDIFF(m,0,getdate())+1,   0))

16,本年的最后一天

SELECT   dateadd(ms,-3,DATEADD(yy,   DATEDIFF(yy,0,getdate())+1,   0))

17,本月的第一个星期一

select   DATEADD(wk,  DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),   0)

18,查询本周注册人数

  1. select count(*) from [user]

  2. where datediff(week,create_day-1,getdate())=0

19,上周注册人数

  1. select count(*) from [user]

  2. where datediff(week,create_day-1,getdate())=1

20,本月注册人数

  1. select count(*) from [user]

  2. where datediff(month,create_day,getdate())=0

21,上月注册人数

  1. select count(*) from [user]

  2. where datediff(month,create_day,getdate())=1

如果要效率,用一下方式

22,查询本周注册人数

  1. select count(*) from [user]

  2. where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))

  3. and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112))

23,上周注册人数 

  1. select count(*) from [user]

  2. where create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112))

  3. and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))

24,本月注册人数

  1. select count(*) from [user]

  2. where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))

  3. and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))

25,上月注册人数

  1. select count(*) from [user]

  2. where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))

  3. and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))

26,本周

  1. select count(*) from User

  2. where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())

27,上周

  1. select count(*) from User

  2. where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7

28,本月

  1. select count(*) from User

  2. where datepart(mm,create_day) = datepart(mm,getdate())

29,上月

  1. select count(*) from User

  2. where datepart(mm,create_day) = datepart(mm,getdate()) - 1

30,本周注册人数

  1. select count(*) from [User]

  2. where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())

31,上周注册人数

  1. select count(*) from [User]

  2. where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7

32,本月注册人数

  1. select count(*) from [User]

  2. where datepart(mm,create_day) = datepart(mm,getdate())

33,上月注册人数

  1. select count(*) from [User]

  2. where datepart(mm,create_day) = datepart(mm,getdate()) - 1

34,查询今日所有

SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC

月(create_day)=月(GETDATE())本月  

月(create_day)=月(getdate()) - 1上月

 

今天的所有数据:select * from Table name其中DateDiff(dd,datetime类型字段,getdate())= 0

昨天的所有数据:select * from Table name其中DateDiff(dd,datetime类型字段,getdate())= 1

7天内的所有数据:select * from Table name where DateDiff(dd,datetime类型字段,getdate())<= 7

30天内的所有数据:select * from Table name where DateDiff(dd,datetime类型字段,getdate())<= 30

本月的所有数据:select * from Table name其中DateDiff(mm,datetime类型字段,getdate())= 0

本年的所有数据:select * from Table name其中DateDiff(yy,datetime类型字段,getdate())= 0

 

 

系统函数:

系统函数
函数参数/功能
GetDate()返回系统目前的日期与时间
DateDiff(interval,date1,date2)以间隔指定的方式,返回date2与date1两个日期之间的差值date2-date1
DateAdd(间隔,数字,日期)以间隔指定的方式,加上数之后的日期
DatePart(间隔,日期)返回日期日期中,间隔指定部分所对应的整数值
DateName(间隔,日期)返回日期日期中,间隔指定部分所对应的字符串名称

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值