по меткам времени выпуска Unix по месяцам - PullRequest
1 голос
/ 03 апреля 2012

Когда я извлекаю ежемесячный отчет, он показывает только записи со 2-го числа месяца до дня, предшествующего последнему месяцу.Например, отчет за апрель месяц показывает только:

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 Ответ

1 голос
/ 03 апреля 2012

Из руководства:

Примечание. Если вы используете UNIX_TIMESTAMP () и FROM_UNIXTIME () для преобразования между значениями TIMESTAMP и Unix timestamp происходит преобразование с потерями, потому что отображение не один-к-одному в обоих направлениях. За Например, из-за соглашений об изменениях местного часового пояса, это возможно для двух UNIX_TIMESTAMP () отобразить два значения TIMESTAMP на та же самая метка времени Unix. FROM_UNIXTIME () отобразит это значение обратно только одно из исходных значений TIMESTAMP.

См. здесь.

Если вы хотите использовать unix_timestamps без учета часовых поясов, вы можете рассчитать его самостоятельно.

В MySQL :

От метки времени до unixtime:

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

Другой способ

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

Для SQL Server см. ссылку .

...