gpt4 book ai didi

mysql - 如何在MySQL中获取 'Monday Date'?

转载 作者:行者123 更新时间:2023-11-29 05:06:08 26 4
gpt4 key购买 nike

我有一个 Oracle SQL 查询,我正在尝试在 MySQL 中重写它。

PS:这里的日期是任意的,在实际场景中,我在 Tableau 中使用此自定义查询,它接受用户定义的日期。“引用开始日期”与“开始日期”进行比较。

Oracle SQL 查询的一部分:

CASE WHEN psr.dt_orgn IS NULL THEN NULL 
ELSE
CASE WHEN CAST('2017-05-22' AS DATE) >= CAST('2017-06-22' AS DATE) THEN TRUNC(psr.dt_orgn,'IW')
ELSE TRUNC(psr.dt_orgn + ((CAST('2017-06-22' AS DATE)-CAST('2017-05-22' AS DATE))*(INTERVAL '1' DAY)),'IW')
END
END) week

上面使用数据库中现有的日历表将日期转换为“周开始日期”,即该周的星期一日期

MySQL 版本:

 CASE WHEN psr.originated IS NULL THEN NULL 
ELSE
CASE WHEN CAST('2017-05-22' AS DATE) >= CAST('2017-06-22' AS DATE) THEN DATE_ADD(psr.originated,
INTERVAL - WEEKDAY(psr.originated) DAY)
ELSE DATE_ADD(psr.originated + ((CAST('2017-06-22'AS DATE) - CAST('2017-05-22' AS DATE)) * (INTERVAL '1' DAY))
END
END) week

我正在使用我发现的解决方案来在 MySQL 中获取“周开始日期”,如下所示:

   DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY)

我在执行此操作时遇到错误。我的问题是如何将相同的内容应用于 MySQL 查询中“1 天间隔”的第二个 else 条件?

或者是否有更简单的解决方案来获取 MySQL 中的周开始日期?

最佳答案

我猜您是在问如何获取任意 DATE 值并返回最近星期一的 DATE 值。在 Oracle 中,您可以使用 TRUNC(datestamp, 'W') 来执行此操作。

这是在 MySQL 中执行此操作的一种方法:

 FROM_DAYS(TO_DAYS(datestamp) -MOD(TO_DAYS(datestamp) -2, 7))

如果你想要周日,你会使用

 FROM_DAYS(TO_DAYS(datestamp) -MOD(TO_DAYS(datestamp) -1, 7))

我把它写在这里了。 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

关于mysql - 如何在MySQL中获取 'Monday Date'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com