我们需要下表中过去的 7 个日期和未来的 14 个日期
天表
ID | 日 |
---|---|
2 | 星期日 |
3 | 周二 |
9 | 周三 |
10 | 星期五 |
8 | 星期四 |
4 | 星期六 |
现在我们根据当前日期获取未来 7 个日期
SELECT CASE
WHEN D.Day='Sunday' THEN date('now', 'localtime', 'weekday 0')
WHEN D.Day='Monday' THEN date('now', 'localtime', 'weekday 1')
WHEN D.Day='Tuesday' THEN date('now', 'localtime', 'weekday 2')
WHEN D.Day='Wednesday' THEN date('now', 'localtime', 'weekday 3')
WHEN D.Day='Thursday' THEN date('now', 'localtime', 'weekday 4')
WHEN D.Day='Friday' THEN date('now', 'localtime', 'weekday 5')
WHEN D.Day='Saturday' THEN date('now', 'localtime', 'weekday 6')
END AS WeekDate
FROM Days AS D
但现在我们需要根据上表从当前日期获取过去的 7 个日期和未来的 14 个日期
答案 0 :(得分:0)
你的做法是对的,解决方法也很简单。
select date('now', 'localtime', 'weekday 0', '-14 days') as 'Sunday2weeks',
date('now', 'localtime', 'weekday 0', '-7 days') as 'Last Sunday',
date('now', 'localtime', 'weekday 0') as 'Next Sunday'
今天(2021-05-26)它回来了
Sunday2weeks Last Sunday Next Sunday
2021-05-16 2021-05-23 2021-05-30
这是有效的,因为 according to SQLite docs 您可以使用零个或多个修饰符。顺序很重要。
从这里开始,修改您的查询应该相当简单。
编辑:
像这样的东西??
SELECT
CASE
WHEN D.X='SUN' THEN date('now', 'localtime', 'weekday 0')
WHEN D.X='MON' THEN date('now', 'localtime', 'weekday 1')
WHEN D.X='TUE' THEN date('now', 'localtime', 'weekday 2')
END AS WeekDate,
CASE
WHEN D.X='SUN' THEN date('now', 'localtime', 'weekday 0', '-7 days')
WHEN D.X='MON' THEN date('now', 'localtime', 'weekday 1', '-7 days')
WHEN D.X='TUE' THEN date('now', 'localtime', 'weekday 2', '-7 days')
END AS LastWeek,
CASE
WHEN D.X='SUN' THEN date('now', 'localtime', 'weekday 0', '+14 days')
WHEN D.X='MON' THEN date('now', 'localtime', 'weekday 1', '+14 days')
WHEN D.X='TUE' THEN date('now', 'localtime', 'weekday 2', '+14 days')
END AS Plus2Weeks
FROM B AS D
--- returns for 26.may 2021
WeekDate LastWeek Plus2Weeks
-----------------------------------
2021-05-30 2021-05-23 2021-06-13
2021-05-31 2021-05-24 2021-06-14
2021-06-01 2021-05-25 2021-06-15