如何从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中的星期和日期中获取日期?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在 SQL Server 中选择周数来获取开始日期和结束日期