按月unix时间戳问题(by month unix timestamp issue)

2019-09-26 14:37发布

当我拉月度报告它只是显示出来的那一天,从每月的第2天的条目是之前的最后的一个月。 例如,对于四月的月报告只显示:

04/02/12 - 12年4月29日

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

12年4月1日 - 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);

谢谢

Answer 1:

从手册:

注:如果您使用UNIX_TIMESTAMP()和FROM_UNIXTIME()来TIMESTAMP值和Unix时间戳值之间进行转换,转换损耗,因为映射不是一个对一个在两个方向上。 例如,由于约定本地时区变化,也可能两个UNIX_TIMESTAMP()来映射2个时间标记值相同的Unix时间戳值。 FROM_UNIXTIME()将该值映射回只有原始时间戳值中的一个。

见这里。

如果你想有没有考虑时区的unix_timestamps,你可以自己进行计算。

MySQL:

从时间戳unixtime:

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

另一种方法

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

对于SQL Server看到这个链接 。



文章来源: by month unix timestamp issue