首页 > 解决方案 > 如何从星期几和星期中获取上一年

问题描述

我有函数从mysql中的当天开始获取星期几和星期几它看起来像。

select 
   DATE_FORMAT(now(), '%U') as w,
   DATE_FORMAT(now(), '%w') as day_of_w;

它返回 w 为 37,day_of_week 为 1。如何获得正确的值 w 为 37,day_of_week 为上一年的 1。

我用

select 
   DATE_FORMAT(now() interval 1 year, '%U') as w,
   DATE_FORMAT(now() interval 1 year, '%w') as day_of_w; 

但是 SQL 无法执行。

标签: mysqlsql

解决方案


将字符串转换为日期的函数是STR_TO_DATE. 如果您想获取 2019 年第 1 天第 37 周的日期,您可以使用

select str_to_date('37 1 2019', '%U %w %Y')

如果您想要今天的日期为去年的星期几和日期:

select str_to_date(concat_ws(' ', date_format(current_date, '%U'),
                                  date_format(current_date, '%w'), 
                                  year(current_date) - 1),
                   '%U %w %Y')

但请注意,有些年份有 53 周,而有些年份则没有。如果您在一年的第 53 周运行此查询,则不会得到有效结果。


推荐阅读