1

我在数据库中有一个 unix 时间戳列表,我想选择今天的时间戳。

即如果今天是星期二,我想获取今天制作的所有时间戳?是否可以?有没有这样的事情strtotime("Today")

任何帮助都会很棒

4

6 回答 6

2

您可以使用mktime()生成一天开始的时间戳,然后找到时间戳大于该时间戳的数据库条目。

于 2010-05-04T16:17:43.027 回答
2
$start = strtotime(date('Y-m-d 00:00:00')); // Current date, at midnight
$end = strtotime(date('Y-m-d 23:59:59')); // Current date, at 11:59:59 PM

然后,您可以选择时间戳在上述两个时间戳之间的位置:

"SELECT FROM `foo` WHERE `timestamp` BETWEEN '{$start}' and '{$end}'"
于 2010-05-04T17:55:17.287 回答
1

您可以使用 将 unix 时间戳转换为 SQL 中的 sql 日期FROM_UNIXTIME(),然后将它们与NOW()

SELECT * FROM `tablename` WHERE DATE(FROM_UNIXTIME(`dateFld`)) = DATE(NOW());
于 2010-05-04T16:23:26.430 回答
0

检查 DAY(NOW()) 和 MONTH(NOW()) 和 YEAR(NOW()) 是否等于 DAY(timestamp) 和 MONTH(timestamp) 和 YEAR(timestamp) 的适当值。

select timestamp from table where DAY(NOW()) = DAY(timestamp) AND MONTH(NOW()) = MONTH(timestamp) AND YEAR(NOW()) = YEAR(timestamp)
于 2010-05-04T16:19:59.113 回答
0

如果你使用 mysql:

SELECT * FROM table WHERE DATE(NOW()) = DATE(FROM_UNIXTIME(timestampcol))
于 2010-05-04T16:26:07.890 回答
0

FROM_UNIXTIME(somefield)可以与CURDATE() 进行比较,假设您使用的是 MySQL

SELECT * FROM mytable WHERE FROM_UNIXTIME(datefield,'%Y-%m-%d') = CURDATE();

ETA:好的,当这个答案被标记时,我受到了质疑。所以我去做了几个测试。鉴于 MySQL,它绝对有效。那么为什么要降级呢?

考虑这个测试,它为表中的每一行输出 2 个相同的字段:

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CURDATE()),'%Y-%m-%d')  a , CURDATE() b
  FROM tablewithsomerows 
  WHERE FROM_UNIXTIME(UNIX_TIMESTAMP(CURDATE()),'%Y-%m-%d') = CURDATE();
于 2010-05-04T16:33:59.573 回答