13 次查询 耗时 0.048 秒
共写了716个字,约2分钟读完,共有0条留言
登录/注册
  • 首页
  • »
  • 时光机
  • »
  • sql server获取当月、年的第一天和最后一天
  • sql server获取当月、年的第一天和最后一天

    作者:比比东

    日期:2020年10月20日

    -- 当月第一天
    select dateadd(month, datediff(month, 0, getdate()), 0)
    -- 当月最后一天(思路:下月的第一天减去一天)
    select dateadd(month, datediff(month, 0, dateadd(month, 1, getdate())), -1)
    -- 当年第一天
    select dateadd(year, datediff(year, 0, getdate()), 0)
    -- 当年最后一天(思路:下年的第一天减去一天)
    select dateadd(year, datediff(year, 0, dateadd(year, 1, getdate())), -1)
    -- 当天零时2020-10-20 00:00:00.000
    select dateadd(day, datediff(day, 0, getdate()), 0)
    

    函数datediff(month, 0, getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。

    记住:日期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。这就是为什么你可以在DATEDIFF函数中指定第一个时间表达式为“0”。

    下一个函数是DATEADD,增加当前日期到“1900-01-01”的月数。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以获得这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”。

    这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,然后把它加到“1900-01-01”上来获得特殊的日期,这个技巧可以用来计算很多不同的日期。

    Back Top
    — 于 共写了716个字
    — 文内使用到的标签:
    — 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可

    “sql server获取当月、年的第一天和最后一天”共有0条评论

    发表评论