我在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无法执行。
答案 0 :(得分:3)
将字符串转换为日期的函数是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周内运行此查询,则不会得到有效的结果。
答案 1 :(得分:0)
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;
答案 2 :(得分:0)
您只需要使用DATE_ADD
中的MYSQL
函数将日期更改为去年。
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