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)

     

你可能感兴趣的:(SqlServer 获取当年时间的时间戳)