以部分答案编辑:
基本上,我想只选择今天的行,而不是过去的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()可能有用,但我不确定。
答案 0 :(得分:1)
“午夜以来”是没有时间的当前日期。没有时间的当前日期的MySQL函数是CURDATE()
,将日期,时间或时间戳转换为UNIX值的函数是UNIX_TIMESTAMP
。
SELECT * FROM your_table
WHERE Ftimestamp_column > UNIX_TIMESTAMP(CURDATE());
另请注意,PostgreSQL date_trunc
函数的MySQL等效项为DATE()
。