我有一个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';
答案 0 :(得分:0)
如果要在日期之后的第三个星期四,可以通过增加3周来获得该日期,然后再增加几天来将日期调整为星期四。这是使用
计算的(12 - DAYOFWEEK(trandate)) % 7
我们需要使用12而不是5(星期四为DAYOFWEEK
),因为MySQL对于除数操作数为负的模运算返回负数。
所以公式是
trandate + INTERVAL 3 WEEK + INTERVAL ((12 - DAYOFWEEK(trandate)) % 7) DAY