|
@@ -5,9 +5,9 @@
|
|
|
<![CDATA[WITH RECURSIVE dates AS (
|
|
|
SELECT
|
|
|
1 AS offset_day,
|
|
|
- CONVERT_TZ(NOW(), '+00:15', '+08:00') AS current_datetime,
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) AS date_val,
|
|
|
- WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))) + 1 AS dow
|
|
|
+ CONVERT_TZ(NOW(), '+00:00', '+08:00') AS current_datetime,
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) AS date_val,
|
|
|
+ WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))) + 1 AS dow
|
|
|
UNION ALL
|
|
|
SELECT
|
|
|
offset_day + 1,
|
|
@@ -31,16 +31,16 @@
|
|
|
WHEN r.date_of_sale IS NOT NULL THEN r.date_of_sale
|
|
|
ELSE
|
|
|
-- 计算下一个指定星期几的日期 (使用本地时区)
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
|
|
|
- (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
|
|
|
+ (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
|
|
|
) DAY
|
|
|
END AS effective_date,
|
|
|
ROW_NUMBER() OVER (
|
|
|
PARTITION BY CASE
|
|
|
WHEN r.date_of_sale IS NOT NULL THEN r.date_of_sale
|
|
|
ELSE
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
|
|
|
- (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
|
|
|
+ (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
|
|
|
) DAY
|
|
|
END
|
|
|
ORDER BY
|
|
@@ -53,8 +53,8 @@
|
|
|
AND opi.use_date_str = CASE
|
|
|
WHEN r.date_of_sale IS NOT NULL THEN DATE_FORMAT(r.date_of_sale, '%Y-%m-%d')
|
|
|
ELSE DATE_FORMAT(
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
|
|
|
- (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
|
|
|
+ (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
|
|
|
) DAY,
|
|
|
'%Y-%m-%d'
|
|
|
)
|
|
@@ -69,10 +69,10 @@
|
|
|
(
|
|
|
r.date_of_sale IS NOT NULL
|
|
|
AND (
|
|
|
- r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
+ r.date_of_sale > DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
OR (
|
|
|
- r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
- AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
+ r.date_of_sale = DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
+ AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
)
|
|
|
)
|
|
|
)
|
|
@@ -82,14 +82,14 @@
|
|
|
r.date_of_sale IS NULL
|
|
|
AND r.day_of_week IS NOT NULL
|
|
|
AND (
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
|
|
|
- (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
|
|
|
- ) DAY > DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
|
|
|
+ (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
|
|
|
+ ) DAY > DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
OR (
|
|
|
- DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')) + INTERVAL (
|
|
|
- (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00')))) % 7
|
|
|
- ) DAY = DATE(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
- AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00'))
|
|
|
+ DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')) + INTERVAL (
|
|
|
+ (7 + (r.day_of_week - 1) - WEEKDAY(DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00')))) % 7
|
|
|
+ ) DAY = DATE(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
+ AND r.start_time > TIME(CONVERT_TZ(NOW(), '+00:00', '+08:00'))
|
|
|
)
|
|
|
)
|
|
|
)
|
|
@@ -130,7 +130,7 @@
|
|
|
JOIN dates dm ON asl.effective_date = dm.date_val
|
|
|
WHERE
|
|
|
asl.rn = 1
|
|
|
- AND NOT (dm.offset_day = 1 AND asl.start_time <= TIME(CONVERT_TZ(NOW(), '+00:15', '+08:00')))
|
|
|
+ AND NOT (dm.offset_day = 1 AND asl.start_time <= TIME(CONVERT_TZ(NOW(), '+00:00', '+08:00')))
|
|
|
ORDER BY
|
|
|
dm.offset_day;
|
|
|
]]>
|