Dis*_*oat 2 php mysql datetime
我正在创建一组按年和月指定的"存档"页面.在我的表中,我有一个datetime叫做的字段posted.我想选择特定月份的所有行.
我想到了两个解决方案:
(1)使用字符串匹配:
SELECT ... WHERE posted LIKE '2009-06%'
Run Code Online (Sandbox Code Playgroud)
(2)使用一些MySQL提取函数:
SELECT ... WHERE YEAR(posted)=2009 AND MONTH(posted)=6
Run Code Online (Sandbox Code Playgroud)
哪一个会更快,有没有更好的解决方案?
SELECT *
WHERE posted >= '2009-06-01'
AND posted < '2009-07-01'
Run Code Online (Sandbox Code Playgroud)
posted与您的查询不同,这个将有效地使用索引.
请注意,如果您保留posted为a VARCHAR,则以下查询:
SELECT ... WHERE posted LIKE '2009-06%'
Run Code Online (Sandbox Code Playgroud)
也会使用索引.