【问题标题】:Date query to select 1st to 3rd of current month and compare against a column日期查询以选择当前月份的 1 日至 3 日并与列进行比较
【发布时间】:2020-01-03 20:30:20
【问题描述】:

我有一个 azure 函数,可以在每个月的 1 号到 3 号之间运行和执行命令。我有一列'datecolumn',它随着每行受到影响的时间而更新。

所有行都有从每个月的 1 号到 3 号的日期列,我想检查这个日期是否小于 当前月份 的 1 号到 3 号,以确保每一行只受到影响每个月一次。

假设现在是 2020 年 1 月 3 日,我希望查询查看并浏览所有行并忽略本月已更改的行,即 datecolumn 显示 2020 年 1 月 1 日或 2 日,并且只选择那些已更改的行并且具有上个月某个时间(2019 年 12 月)的 datecolumn 值。

预期结果:日期为当月 1 日至 3 日。

我尝试了一些代码,但我得到了正确的日子,但它每年都会选择。

谢谢

DECLARE @startDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '1/' +  + CAST(YEAR(GETDATE()) AS VARCHAR) -- mm/dd/yyyy
DECLARE @endDate DATETIME=CAST(MONTH(GETDATE()) AS VARCHAR) + '/' + '3/' +  + CAST(YEAR(GETDATE()) AS VARCHAR)  -- mm/dd/yyyy

;WITH Calender AS 
(
    SELECT @startDate AS CalanderDate
    UNION ALL
    SELECT CalanderDate + 1 FROM Calender
    WHERE CalanderDate + 1 <= @endDate
)
 SELECT * FROM thetable where datecolumn BETWEEN @startDate AND @endDate

【问题讨论】:

    标签: sql sql-server azure-functions


    【解决方案1】:

    我会采取其他解决方案

    SELECT whatever 
    FROM thetable 
    WHERE NOT (YEAR(datecolumn) = YEAR(GETDATE()) 
          AND MONTH(datecolumn) = MONTH(GETDATE()) 
          AND DAY(datecolumn) < 4)
    

    【讨论】:

    • 您好,谢谢。但这会返回在 2019 年 8 月 1 日至 3 日受到影响的行。它不应该返回 datecolumn 为 1,2 或(当前月份)8 月 3 日的任何行。
    • 显示 8 月的所有日期,然后除了 1-3 或所有不在 8 月 1-3 日的行(也包括其他月份和年份)?
    • 显示所有不是当前月份 1-3 的日期(所以现在是 8 月,很快 9 月,是的,其他月份和年份)。谢谢
    • 它现在没有显示日期为 1-3 的任何月份,它应该显示 7 月和其他月份,而不仅仅是 8 月。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 2011-11-21
    • 2017-05-15
    相关资源
    最近更新 更多