1

我有一个非常复杂的数据库,其中包含用于不同事物的不同表的负载,每个事物都有一个时间戳(YMD h:m:s 格式)

有没有办法可以将我的 SQL 查询限制为某个时间跨度的结果,例如一周前?

如果需要的话,我有一个函数可以将这些时间戳转换为 unix

sqlToUnix($date);
//returns $unixTime

所以例如

mysql_query(SELECT id FROM entries WHERE entries.date >= $formattedDateString);

谢谢!

提醒一下,数据库日期的格式为:2009-02-15 08:47:45

4

3 回答 3

4

使用 BETWEEN 语句(自 MySQL 4.0 起)完全可以做到这一点:

mysql_query("SELECT id FROM entries WHERE entries.date BETWEEN 'Y-M-D h:m:s' AND 'Y-M-D h:m:s'");

此外,要计算当前日期前一周的时间戳,请查看MySQL 在线文档

于 2009-02-15T12:56:48.030 回答
1

我自己是一个 MSSQL 用户,但是在网上查找我可以看到一些关于 MySQL 5.0 的有用信息...

curdate()
date_add()

有了这个,你应该能够创建一个 WHERE 子句,比如......

WHERE
   <field> >= date_add(curdate(), INTERVAL -7 DAY)

如其他地方所述,如果字段是字符串,请使用STR_TO_DATE()将其转换为日期

于 2009-02-15T14:41:47.917 回答
0

是的,就像您所写的那样,您可以对输出进行大于和小于限制。哪里有问题?

如果您的字段不是时间戳/日期时间字段而是字符串,请使用 MySQL 函数 STR_TO_DATE() ( http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html )

于 2009-02-15T12:55:10.357 回答