青松

博客园 首页 新随笔 联系 订阅 管理

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什么的了。


posted on 2007-06-13 15:57  轻轻松松  阅读(443)  评论(0编辑  收藏  举报