zoukankan      html  css  js  c++  java
  • 计算当前年份是否是闰年

    WITH x (
        dy
        ,mth
        )
    AS (
        SELECT dy
            ,month(dy)
        FROM (
            SELECT dateadd(mm, 1, (getdate() - datepart(dy, getdate())) + 1) dy
            ) tmp1
        
        UNION ALL
        
        SELECT dateadd(dd, 1, dy)
            ,mth
        FROM x
        WHERE month(dateadd(dd, 1, dy)) = mth
        )
    SELECT max(day(dy))
    FROM x

    利用 WITH 递归查询生成 2 月的每一天。

    第一步先找出 2 月的第一天。

    先找出当前年份的第一天:计算出当前日期是当前年份的第几天,用当前日期减去 该值,然后再加上 1 天。

    select getdate()-datepart(dy,getdate())+1

    既然有了当前年份的第一天,调用 DATEADD 函数加上 1 个月,就 能得到 2 月的第一天了。
    select dateadd(mm,1,(getdate()-datepart(dy,getdate()))+1) dy

     WITH 子句的递归特性,不断为内嵌视图 TMP1 返回的 DY 加上 1,直到日期对应的 月份不再是  2 月,

  • 相关阅读:
    mysql面试知识点
    计算机网络
    BFS
    拓扑排序
    双指针
    回溯算法
    hash表 算法模板和相关题目
    桶排序及其应用
    滑动窗口
    贪心算法
  • 原文地址:https://www.cnblogs.com/Monkey18/p/13858605.html
Copyright © 2011-2022 走看看