给定MySQL中的日期,我如何确定一周的相对开始?

时间:2011-06-01 03:24:15

标签: mysql sql datetime

我的表格中有date_time列。

如何获取本周开始的日期,即2011-01-09 13:44:00将返回2011-01-07 00:00:00的日期?

我查看了MySQL Date functions,但无法弄清楚如何做到这一点。

我尝试过这样的事情......

DATE_ADD( YEAR( NOW( ) ) , INTERVAL WEEK( NOW( ) ) WEEK ) AS `start_of_week` 

但我得到的只是NULL

我该怎么做?

2 个答案:

答案 0 :(得分:1)

If you don't mind converting to Date first (from DateTime)

DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY)

另外,STR_TO_DATE函数is a possibility。将您的年份和星期连接在一起,然后是您想要的字符串日期格式,然后可以将其转换为日期时间。

SELECT STR_TO_DATE('201003 Monday', '%X%V %W');

答案 1 :(得分:1)

SELECT DATE_ADD( DATE( NOW() ) , INTERVAL -WEEKDAY( NOW() ) DAY ) AS `start_of_week` 

这将返回2011-05-30,如果您的一周的第一天是星期一,那将会很好,否则您应该再减去一天。

我不确定您使用周/年