按月unix时间戳问题

时间:2012-04-03 13:47:30

标签: php sql unix-timestamp

当我提取月度报告时,它仅显示从该月的第二天到该月的最后一天之前的条目。例如,4月份的报告仅显示:

04/02/12 - 04/29/12

我可以修改什么来显示条目:

04/01/12 - 04/30/12

$month = $_GET['month'];
if ($services =     $db->get_results("SELECT * from vw_newservices where month(from_unixtime(datetime)) = '$month'")) {
foreach ($services as $service) {
$datetime = date("m/d/y",$service->datetime);

由于

1 个答案:

答案 0 :(得分:1)

从手册:

  

注意:如果使用UNIX_TIMESTAMP()和FROM_UNIXTIME()进行转换   在TIMESTAMP值和Unix时间戳值之间,转换是   因为映射在两个方向上都不是一对一的。对于   例如,由于本地时区更改的约定,它是   可能有两个UNIX_TIMESTAMP()将两个TIMESTAMP值映射到   相同的Unix时间戳值。 FROM_UNIXTIME()会将该值映射回   只有一个原始的TIMESTAMP值。

请参阅here.

如果你想在不考虑时区的情况下拥有unix_timestamps,你可以自己计算。

MySQL

从时间戳到unixtime:

SELECT timestampdiff(second, '1970-01-01', yourTimestampColumnOrValue);

另一种方式

SELECT timestampadd(second, yourTimestampColumnOrValue, '1970-01-01');

对于 SQL Server ,请参阅此link