如何从周数和日期中获取日期在SQL?

Flo*_*ton 7 mysql sql datetime

我同时在表中存储了星期编号和它们对应的星期几(即星期一,星期二,星期三,.....)。
以下代码应该从日期返回星期数,但我无法解决这个问题

select WEEKOFYEAR(CURDATE())
Run Code Online (Sandbox Code Playgroud)

我的桌子:

RecordID|Record|WeekID|DayofWeek
--------------------------------
1       |text1 |43    |mon
2       |text2 |43    |tue
3       |text3 |44    |wed
Run Code Online (Sandbox Code Playgroud)

所需的输出:

RecordID|Record|Date
--------------------------------
1       |text1 |2019/10/30
2       |text2 |2019/10/31
3       |text3 |2019/11/01
Run Code Online (Sandbox Code Playgroud)

我想从他们那里获取日期(假设当前年份)。是否有可能在sql中完成,还是只能在服务器端完成?
*日期仅供参考

mkR*_*ani 5

以下示例脚本可能会对您有所帮助。希望您的数据库中提供所有必要的值,并且您已将它们相应地传递给函数 -

SELECT STR_TO_DATE('2013 10 Tuesday', '%X %V %W');

--2013 is the year value
--10 is the week number
--Tuesday is the day name
Run Code Online (Sandbox Code Playgroud)

如果您的表中包含所有三个值,并运行提供适当值的 STR_TO_DATE 函数 - 这将返回一个类似于“2013-03-12”的日期。

您可以检查以下脚本 -

SELECT 
STR_TO_DATE(concat('2019',' ', WeekID,' ', DayofWeek), '%X %V %W') 
FROM (
    SELECT 1 RecordID, 'text1' Record, 43 WeekID,'mon' DayofWeek UNION ALL
    SELECT 2,'text2',43,'tue' UNION ALL
    SELECT 3,'text3',44,'wed'
)A;
Run Code Online (Sandbox Code Playgroud)

您的最终查询应如下所示-

SELECT 
STR_TO_DATE(concat('2019',' ', WeekID,' ', DayofWeek), '%X %V %W') 
FROM your_table_name A;
Run Code Online (Sandbox Code Playgroud)

注意:2019 年是固定的,因为您的表中没有该值。如果可用,您还可以在使用其他列时动态使用该列。