SQL里计算时间是经常会遇到的。
那么我们先要知道一个基本的东西
Select Cast(0 As Datetime)
------------------------------------------------------
1900-01-01 00:00:00.000

也就是说 int类型的0相当于 datetime类型的1900-01-01 00:00:00.000

下面的例子是计算当前月的第一天日期时间(当然有更简单的算法,这里是举例而已)
select  DateAdd(mm, DateDiff(mm,0,getdate()), 0)

说明:1、DateDiff(mm,0,getdate())  就是计算当前日期与1900-01-01 00:00:00.000 月间隔(=1289)
      2、DateAdd(mm, 1289, 0)      计算 1900-01-01 00:00:00.000增加1289个月后的日期

同样计算
  
  当前年的第一天(元旦)
  select DateAdd(yy, DateDiff(yy,0,getdate()), 0)
  
  本季度的第一天  
  Select DateAdd(qq, DateDiff(qq,0,getdate()), 0)   

  本周的第一天(星期一)日期
  select DateAdd(wk, DateDiff(wk,0,getdate()), 0)

    这里我们需要知道
    select datepart(wk,0) 是周一(就是说1900-01-01 00:00:00.000 是礼拜一)
    就不需要设置set datefirst 1什么的了。


相关文章:

  • 2021-11-13
  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
  • 2021-04-12
  • 2021-12-05
  • 2021-11-06
相关资源
相似解决方案