pet*_*erm 23
UPDATE
一种更好的索引友好方式,可以查询一系列日期的数据
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
AND timestampfield < UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)
**注意:**您不对列数据应用任何函数,而是在条件的右侧进行所有必要的计算(这些是常量,仅在诗人执行时进行评估).这样,您就可以让MySQL从timestampfield列上可能包含的索引中受益.
原始答案:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
Run Code Online (Sandbox Code Playgroud)
注意:尽管此查询产生了正确的结果,但它实际上会使您对timestampfield列可能具有的索引的正确使用无效(这意味着MySQL将被强制执行fullscan)
这是SQLFiddle演示
使用此查询可能对您有所帮助,
Query = "SELECT * FROM <table_name> WHERE MONTH(date_entered) = MONTH(CURDATE())";
Run Code Online (Sandbox Code Playgroud)
在我看来,以下内容比接受的答案更具可读性......
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE timestampfield >= DATE_FORMAT(NOW(), '%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)
注意:这也会选择下个月的任何记录。这通常并不重要,因为还没有创建任何东西。