簡體   English   中英

MySQL將DateTime(存儲UTC_TIMESTAMP)轉換為1970年的秒數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM