我有一个数据库中的unix时间戳列表,我想选择从今天开始的时间戳。unix时间戳和php
即如果今天是Tueday,我想获得今天制作的所有时间戳吗?可能吗?有没有像strtotime("Today")
这样的事情?
任何帮助将是巨大的
我有一个数据库中的unix时间戳列表,我想选择从今天开始的时间戳。unix时间戳和php
即如果今天是Tueday,我想获得今天制作的所有时间戳吗?可能吗?有没有像strtotime("Today")
这样的事情?
任何帮助将是巨大的
可以使用mktime()生成的一天的开始时间戳,然后查找数据库条目与时间戳大于。
另外,您可以使用'getdate()'作为'mktime()'的信息源,并将值设置为0。 (我唯一假设您使用UTC值并且只为显示目的进行时区转换。) – 2010-05-04 17:00:56
检查DAY(NOW())和MONTH(NOW())和YEAR(NOW())是否等于DAY(时间戳)和MONTH(时间戳)和YEAR(时间戳)的适当值。
SELECT * FROM table WHERE DATE(NOW()) = DATE(FROM_UNIXTIME(timestampcol))
这不起作用 - 原始帖子指出日期存储为unix时间戳。 – 2010-05-04 16:24:17
你说得对,我的不好。 – TBH 2010-05-04 16:33:20
可以使用FROM_UNIXTIME()
转换Unix的时间戳在SQL SQL日期,然后如果你使用MySQL比较那些NOW()
SELECT * FROM `tablename` WHERE DATE(FROM_UNIXTIME(`dateFld`)) = DATE(NOW());
FROM_UNIXTIME()是仅MySQL的函数。 sea_1987并没有说他得到了什么DBMS。 – symcbean 2010-05-04 16:46:48
够公平的,你知道他们对假设的看法! – 2010-05-04 16:53:37
@symcbean是绝对正确的,但是当语言是PHP时,mySQL在统计上是一个很好的猜测。 – 2010-05-04 16:57:19
与CURDATE
()进行比较(假设您使用的是MySQL)
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();
和我的答案一样! – 2010-05-04 16:29:27
select timestamp from table where DAY(NOW()) = DAY(timestamp) AND MONTH(NOW()) = MONTH(timestamp) AND YEAR(NOW()) = YEAR(timestamp)
$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}'"
你正在使用哪些DBMS? – dnagirl 2010-05-04 16:53:59
你可以认为它是Mysql,因为没有另外指定;) – TBH 2010-05-04 19:33:24
@TBH:好的,我做到了。但是有些人*为了这个假设而拿着代表点。 – dnagirl 2010-05-05 12:13:05