[英]MySQL convert DateTime (storing a UTC_TIMESTAMP) to number of seconds 1970
有很多類似的問題,但我相信這一個是獨一無二的。 (對不起,如果不是)
我們的數據庫有datetime字段名為“date_sampled”,我們用UTC_TIMESTAMP()存儲
我們的目標是返回自1970年以來的秒數。我注意到UNIX_TIMESTAMP()如果提供,則沒有參數返回當前的UNIX_TIMESTAMP(),如果傳遞了datetime(即2011-10-10),則返回以秒為單位的時間戳。
然而UTC_TIMESTAMP()不喜歡這個工作, 它只返回當前UTC時間戳。
那么如何將我的DateTime字段(持有UTC日期時間)轉換為MySQL中1970年的秒數? 如果無法在MySQL中完成,那么PHP解決方案將起作用。
謝謝。
MySQL中有一個TIMESTAMPDIFF函數,你可以使用它
SELECT TIMESTAMPDIFF(SECOND,'1970-01-01 00:00:00', YourUTCDateFromSomewhere)
文檔中的更多詳細信息 - http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff
有趣的問題......我不知道如何用SQL做這個...但PHP的解決方案是使用strtotime()函數..
<?php
echo strtotime('2011-10-10');
?>
上面的示例返回值1318219200,它是自1970年代以來經過的秒數
你想讓UTC_TIMESTAMP
做什么來做UNIX_TIMESTAMP
呢? 根據定義,Unix時間戳以UTC為單位。
我假設您遇到的問題是,即使您以UTC UNIX_TIMESTAMP
存儲日期時間, UNIX_TIMESTAMP
也會為您提供時區偏移結果,因此您可以獲得與您期望的相差幾個小時的值。
UNIX_TIMESTAMP
尊重MySQL的time_zone
變量 ,因此如果您的所有日期都是UTC,則可以將會話的time_zone
變量設置為UTC,這會導致UNIX_TIMESTAMP
在將日期時間轉換為時間戳時不進行時區轉換。
SET time_zone = '+00:00'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.