【问题标题】:Compare month extract from date, same year or next year比较日期、同年或明年的月份提取
【发布时间】:2018-01-04 19:52:26
【问题描述】:

此 SQL 语句在去年运行良好,用于选择当前月份大于 SubqueryMax 月份匹配 ciient_id 的数据。现在,Subquery return Max 去年的月份是 12 是否比较今年的当前月份是 1。这就是 SQL 语句返回 0 记录的原因。

我必须找出client_id,那些当月不存在于Subquery 中的人。我可以与日期进行比较。请帮我离开这里。

SELECT c.id, p.pkg_rate AS amount
FROM tbl_client AS c 
INNER JOIN tbl_package AS p ON c.pkg_id = p.id
WHERE c.status=1 AND 
      Month(Date())>(SELECT Month(Max([due_month])) FROM tbl_payment_due WHERE 
      c.id=client_id);

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    一种方法是先将日期格式化为字符串。

    Format(Date(),"yyyymm") > (SELECT Format(Max([due_month]),"yyyymm") FROM tbl_payment_due WHERE c.id=client_id)
    

    第二种选择是在WHERE 子句中添加年份检查(注意:我的括号可能有点偏)。

    (Year(Now()) > (SELECT Year(Max([due_month])) FROM tbl_payment_due WHERE c.id=client_id)) OR 
    ((Year(Now()) = (SELECT Year(Max([due_month])) FROM tbl_payment_due WHERE c.id=client_id)) AND (Month(Date())>(SELECT Month(Max([due_month])) FROM tbl_payment_due WHERE c.id=client_id)))
    

    【讨论】:

    • 我之前尝试过喜欢你的第一种方法,但没有成功,现在它完美无缺,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多