【问题标题】:Find date based on week + dayofweek mysql根据星期+ dayofweek mysql查找日期
【发布时间】:2014-07-07 11:59:18
【问题描述】:

假设我知道DAYOFWEEK() 的日期,并且我知道WEEK()YEAR() 数字。是否可以在 mysql 中根据这些值格式化日期?

【问题讨论】:

  • 如果您拥有(或愿意创建)calendar table,这确实是一项非常容易的任务。
  • 感谢您的回答,但假设这是不可能的。可以以查询的形式完成吗?
  • 为什么要为此使用 RDBMS?
  • 我正在尝试通过选择与当前行的 DAYOFWEEK()、WEEK() 和 YEAR()-1 匹配的行来创建指向另一行的指针。基本上我试图指向去年的同一天。

标签: mysql sql date dayofweek


【解决方案1】:

给你:

SELECT STR_TO_DATE('2014-20-2','%Y-%U-%w')-INTERVAL 1 DAY n;
+------------+
| n          |
+------------+
| 2014-05-19 |
+------------+

INTERVAL 位是为了说明 %w 将星期几解释为 0(星期日)到 6 的事实,而 DAYOFWEEK 从 1(星期日)到 7 - 去看看!!!

%U 的工作方式也可能与 WEEK(); 略有不同。以上似乎给出了正确的答案,所以我没有进一步研究。

【讨论】:

  • 这看起来很有用。这不完全是我所需要的,但这是由于我如何表达我的问题的性质。我会回来报告的。
【解决方案2】:

我不擅长 sql,所以我只会编写用于解决该问题的逻辑。

我们知道现在是哪一年 (YEAR())。我们可以使用 1.1.1900 的事实。是星期一来计算星期几是 1.1。当年的。然后我们可以计算出哪些日期在当前周(WEEK())。再次使用 1.1.1900 的事实。是星期一,我们可以计算出每个星期是星期几,并将其与当前星期几(DAYOFWEEK())进行比较。

同样,我不擅长使用 sql,因此这可能是一种效率极低的解决方案。但我希望这至少能给您一些想法并帮助您找到解决方案。祝你好运。

【讨论】:

    【解决方案3】:
    SELECT 
    DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00') AS date,
    STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s') AS samedaylastyear,
    DAYOFWEEK(DATE_FORMAT(FROM_UNIXTIME(1400463204), '%Y-%m-%d 00:00:00')) AS check1,
    DAYOFWEEK(STR_TO_DATE(DATE_FORMAT(FROM_UNIXTIME(1400463204), CONCAT(YEAR(FROM_UNIXTIME(1400463204)-INTERVAL 1 YEAR),'-','%U-%w')), '%Y-%U-%w %H:%i:s')) AS check2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多