[英]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.