如何从sql中的星期和日期中获取日期?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从sql中的星期和日期中获取日期?相关的知识,希望对你有一定的参考价值。

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

select WEEKOFYEAR(CURDATE())

我的桌子:

RecordID|Record|WeekID|DayofWeek
--------------------------------
1       |text1 |43    |mon
2       |text2 |43    |tue
3       |text3 |44    |wed

所需的输出:

RecordID|Record|Date
--------------------------------
1       |text1 |2019/10/30
2       |text2 |2019/10/31
3       |text3 |2019/11/01

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

答案

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

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

如果表中所有三个值都可用,并运行提供适当值的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;

您的最终查询应如下-

SELECT 
STR_TO_DATE(concat('2019',' ', WeekID,' ', DayofWeek), '%X %V %W') 
FROM your_table_name A;

注意:由于表中没有该值,因此2019年是固定的。如果可用,您也可以像使用其他列一样动态使用该列。

另一答案

您不能仅从星期数和星期几中获取日期,您也需要年份。

另一答案

您的问题尚不完全清楚。

我想你有专栏

  • [year具有类似2001的值
  • [WeekID具有类似36的值
  • [DayOfWeek,其值类似于tue

然后,您可以使用类似这样的表达式来获取DATE值。 mysql在星期和工作日均具有date format strings

SELECT STR_TO_DATE (CONCAT(year, '/', week, '/', weekday), '%Y/%v/%a')

这里是小提琴。 https://www.db-fiddle.com/f/iGrnkM5WgWTVPxuqxfPxdK/0

但是请注意,周数的计算是遵守当地和国际标准的业务规则。请务必使用几个不同日历年的前几天测试日期,以确保您了解自己的情况。

You can read about the choices for week computation here。您使用WEEKOFYEAR()来获取星期数。对应于%v格式说明符。

以上是关于如何从sql中的星期和日期中获取日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ssis 包中的变量中获取当前周星期一的日期

如何通过在 SQL Server 中选择周数来获取开始日期和结束日期

如何根据sql中组中的日期集获取前7天的数据

当用户从日期选择器中选择日期时,如何在下拉列表中获取特定的星期几?

如何获取当月第一周的日期

基于日期获取所有日期 - sql