使用标准的unix时间戳存储数据库中发布条目的日期。
是否有可能只使用mysql查询(没有php逻辑)来选择在某一年发布的条目?
id喜欢避免检索所有条目,然后使用php过滤年份值。我当然可以把这一年存放在一个单独的领域,只是好奇这个
答案 0 :(得分:3)
这应该是你想要的:
SELECT FROM_UNIXTIME(my_unix_timestamp_column, '%Y') AS year FROM table_name WHERE my_unix_timestamp_column BETWEEN UNIX_TIMESTAMP('2004-01-01 00:00:00') AND UNIX_TIMESTAMP('2004-12-31 23:59:59');
答案 1 :(得分:2)
你只希望MySQL做一次提取年份的艰苦工作:
SELECT your, columns
FROM posts
WHERE postdate BETWEEN UNIX_TIMESTAMP('20080101') AND (UNIX_TIMESTAMP('20090101')-1)
显然,这很容易适应在某个月或几天或十年内提取帖子等。
答案 2 :(得分:1)
可能使用FROM_UNIXTIME()函数
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_from-unixtime
答案 3 :(得分:0)
更好的方法是使用一点PHP来创建所需的unix时间戳。如果是今年尝试
$timestamp = strtotime("January, 1, 2009");
$db->query("Select * from table where time < $timestamp");
这只是一个例子,但是你可以快速缩小搜索结果,只做非常小的php逻辑。
答案 4 :(得分:0)
取决于你的mysql版本。 5.1具有这个简洁的功能FROM_UNIXTIME(unix_timestamp,format)
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
-> '%Y %D %M %h:%i:%s %x');
-> '2007 30th November 10:30:59 2007'