SqlServer 获取当年时间的时间戳

有时候我们会发现,直接对比时间戳,要比先转换为时间格式然后再对比要很多。那么,如何获取当前年第一天的时间戳呢?

datediff(ss,'1970-01-01',DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) )

授之以鱼,不如授之以渔,上面有个函数其实是通用的;

datediff取差函数(第三个参数可以根据自己的需要更改)

 

既读取当前时间与1970-01-01之间的秒数就是当前时间戳

datediff函数很强大,比如要算出两个日期之间的月数

    • ss 表示以秒为单位
    • 1970-01-01 时间戳都从这个日期计算
    • getdate() 当前时间
    • DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 当年的第一天
    1> SELECT datediff(mm,'2012-01-01',GETDATE()) as time      
    2> go
    time
    13
    (1 row affected)
    

    当然,如果你也可以通过getdate()读取当前日期以后也可以使用其它语言转换成时间戳也可以。

  • 更多固定日期格式如下

    
    --本周的第一天
    SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) 
     
    --本年的第一天
    SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 
     
    --本季度的第一天
    SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)  
     
    --当天的凌晨
    SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 
     
     
    --上个月的最后一天
    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 
     
    --上一年的最后一天
    SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 
     
    --本月的第一天
    SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 
     
    --本月的最后一天
    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
     
    --本年的最后一天
    SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
     
    --本月的第一个星期一 
    select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值