unix时间戳和php

时间:2010-05-04 16:14:18

标签: php mysql strtotime timestamp

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

即如果今天是Tueday,我想获得今天制作的所有时间戳?可能吗?有没有strtotime("Today")这样的东西?

任何帮助都会很棒

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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

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

"SELECT FROM `foo` WHERE `timestamp` BETWEEN '{$start}' and '{$end}'"

答案 2 :(得分:1)

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

SELECT * FROM `tablename` WHERE DATE(FROM_UNIXTIME(`dateFld`)) = DATE(NOW());

答案 3 :(得分:0)

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

select timestamp from table where DAY(NOW()) = DAY(timestamp) AND MONTH(NOW()) = MONTH(timestamp) AND YEAR(NOW()) = YEAR(timestamp)

答案 4 :(得分:0)

如果您使用的是mysql:

SELECT * FROM table WHERE DATE(NOW()) = DATE(FROM_UNIXTIME(timestampcol))

答案 5 :(得分:0)

假设您正在使用MySQL

,可以将

FROM_UNIXTIME(somefield)CURDATE()进行比较

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

ETA: 好的,当这个答案被标记下来时,我被怀疑了。所以我去做了几次测试。鉴于MySQL它肯定有效。那么为什么downmod?

考虑这个测试,它为表中的每一行输出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();