选择本周创建的所有行(从星期日开始)

时间:2013-07-25 03:51:04

标签: mysql date datetime unix-timestamp

以部分答案编辑:

基本上,我想只选择今天的行,而不是过去的24小时,我想选择7月的行,而不是过去31天(2013年7月1日 - > 7月31日,非6 / 25/13 - > 7/25/13)。

这就是我用来仅选择今天的行。我使用America / Los_Angeles作为用户指定时区的占位符(将使用PHP填充)。下面使用的“时间戳”只是创建行时的标准MySQL时间戳。

SELECT * FROM table 
WHERE convert_tz(timestamp, 'UTC', 'America/Los_Angeles') 
>= DATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles'));

对于本周的记录,我仍然会使用DATE(convert_tz(NOW(), 'UTC', 'America/Los_Angeles'))在用户的时区获取当前日期,但我不确定如何从中获取一周的第一天,例如,今天的日期返回7 / 25/13,但本周的第一天是2013年7月21日。

对于这个月,我可以采取今天的日期,使用MONTH()函数仅抓取月份,然后通过执行

创建一个新的Date对象
str_to_date(
      concat( MONTH( [today's date from above] ), 
             ' 01', 
             ' 2013'),
      '%m %d %Y'
)

这会让我在本月的第一天。如果需要,今年的行也可以这样做。

无论如何,这只会留下本周创建的行。 WEEKDAY()可能有用,但我不确定。

1 个答案:

答案 0 :(得分:1)

“午夜以来”是没有时间的当前日期。没有时间的当前日期的MySQL函数是CURDATE(),将日期,时间或时间戳转换为UNIX值的函数是UNIX_TIMESTAMP

SELECT * FROM your_table
WHERE Ftimestamp_column > UNIX_TIMESTAMP(CURDATE());

另请注意,PostgreSQL date_trunc函数的MySQL等效项为DATE()