我有一个MySQL选择查询,我试图从表中的日期获取第三个星期四,这是我对查询所拥有的任何帮助,将不胜感激。

SELECT
trandate,
transno,
inputdate,
DATE_ADD(DATE(trandate),
    INTERVAL (IF(DAYOFWEEK(trandate) < 5,
        (3 + WEEK(trandate)),
        WEEK(trandate))) DAY) AS third_thursday
FROM
    ts.debtortrans
WHERE
    trandate = '2019-03-01';

最佳答案

如果要在日期后的第三个星期四进行操作,则可以通过增加3个星期,然后将天数调整为星期四来获得。这是使用

(12 - DAYOFWEEK(trandate)) % 7


我们需要使用12而不是5(星期四为DAYOFWEEK),因为MySQL对除数操作数为负的模运算返回负数。

所以公式是

trandate + INTERVAL 3 WEEK + INTERVAL ((12 - DAYOFWEEK(trandate)) % 7) DAY


Demo on dbfiddle

关于mysql - MySQL选择从表日期查找第三周和一周中的某天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55680671/

10-11 09:17