【发布时间】:2018-07-18 14:02:24
【问题描述】:
我正在尝试在 sql 查询中从一个日期范围构造一个字符串,以创建另一个列来表示该天所属的一周中的星期一,即创建以下内容:
salesDate mondayText
13/11/17 Mon 13 Nov
14/11/17 Mon 13 Nov
15/11/17 Mon 13 Nov
16/11/17 Mon 13 Nov
17/11/17 Mon 13 Nov
18/11/17 Mon 13 Nov
19/11/17 Mon 13 Nov
20/11/17 Mon 20 Nov
21/11/17 Mon 20 Nov
22/11/17 Mon 20 Nov
23/11/17 Mon 20 Nov
24/11/17 Mon 20 Nov
25/11/17 Mon 20 Nov
26/11/17 Mon 20 Nov
我尝试了以下方法,但似乎有点矫枉过正:
CONCAT(LEFT(DAYNAME(STR_TO_DATE(CONCAT(YEAR(`order_date`),LPAD(WEEKOFYEAR(`order_date`),2,'0'),' ','Monday'), '%X%V %W')),3),' ',
EXTRACT(DAY FROM (`order_date` - INTERVAL WEEKDAY(`order_date`) Day)),' ',
LEFT(MONTHNAME(STR_TO_DATE(CONCAT(YEAR(`order_date`),LPAD(WEEKOFYEAR(`order_date`),2,'0'),' ','Monday'), '%X%V %W')),3)) AS mondayText
当几周跨越几个月时,这会导致问题。有人有什么想法吗?
【问题讨论】:
-
恰恰相反,我试图从日期获取 mondayText 数据,而不是相反?