Всегда считал что (x-"любое число")-(y-"любое число") = x-y
Принимаем:
x=epoch FROM now()
y=epoch FROM cast(now() AS timestamp
Выполняем запрос:
SELECT (extract(epoch FROM now() - cast('2014-08-23 15:06:00' AS timestamp)) -
extract(epoch FROM cast(now() AS timestamp) - cast('2014-08-23 15:06:00' AS timestamp))) union
select (extract(epoch FROM now())- extract(epoch FROM cast(now() AS timestamp)))
Получаем
-21600
3600
Где ошибка никак понять не могу...
Запусти SELECT now(),
Запусти
SELECT now(), cast(now() AS timestamp)
и увидишь +ХХ в одном из полей, это будет смещение по твоему часовому поясу, в то время как другой этого смещения не показывает.
Отсюда и твоя проблема, ты для чего-то делаешь CAST
Cast - приводит значение к
Cast - приводит значение к типу timestamp. Ноги растут из необходимости получить разницу между датами в секундах.Правильную разницу на разных промежутках времени.
То, что один показывает смещение, а другой нет я знаю
Часовой пояс +6
6ч*60мин*60сек=21600сек
Эта цифра понятна, но откуда берется 3600(т.е 1 час) не понятно. Как я предполагал, тут должна быть цифра 21600, если дело в зоне.