簡體   English   中英

如何從星期幾和星期幾獲得上一年

[英]How to get previous year from day of week and week

我有函數在 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不能執行。

將字符串轉換為日期的函數是STR_TO_DATE 如果要獲取 2019 年第 37 周第 1 天的日期,可以使用

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 周運行此查詢,則不會得到有效結果。

select DAYOFWEEK(now()) day_of_week, week(now()) week from dual

您的查詢存在語法問題。 你忘記了 +/- 符號

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

您只需要在MYSQL使用DATE_ADD函數將日期更改為去年。

select DATE_FORMAT(DATE_ADD(now(), INTERVAL -1 YEAR), '%U') as w
,DATE_FORMAT(DATE_ADD(now(), INTERVAL -1 YEAR), '%w') as day_of_w;

結果:

36  6

當前和去年日期:

select now() as curr_yr_date, DATE_ADD(now(), INTERVAL -1 YEAR) as last_yr_date;

結果:

2020-09-14 07:13:24 2019-09-14 07:13:24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM