编辑部分答案:
基本上,我只想选择今天的行,而不是过去 24 小时,我想选择 7 月的行,而不是过去 31 天(7/1/13 -> 7/31/13,而不是 6/25/13 - > 2013 年 7 月 25 日)。
这就是我用来仅选择今天的行的方法。我使用 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'))
但我不确定如何从中获取一周的第一天,例如,今天的日期返回 13 年 7 月 25 日,但第一天本周是 2013 年 7 月 21 日。
对于月份,我可以取今天的日期,使用 MONTH() 函数只获取月份,然后通过执行创建一个新的 Date 对象
str_to_date(
concat( MONTH( [today's date from above] ),
' 01',
' 2013'),
'%m %d %Y'
)
这将给我这个月的第一天。如果需要,今年的行也可以这样做。
无论如何,这只会留下本周创建的行。WEEKDAY() 可能有用,但我不确定。