2010-03-13 90 views
26

我無法找到(谷歌搜索,閱讀MySQL參考手冊)如何獲得值在DATETIME在幾秒鐘內在MySQLMYSQL - 日期時間到秒

我不想從日期時間中提取秒,但要將其轉換爲秒。

回答

27

如果你想擁有DATETIME值之間的差異,使用TIMESTAMPDIFF

TIMESTAMPDIFF(單元,datetime_expr1,datetime_expr2)

返回datetime_expr2 – datetime_expr1,其中datetime_expr1datetime_expr2是日期或日期時間表達式。一個表達可能是一個日期,另一個表達可能是日期時間;在必要時日期值被視爲具有時間部分'00:00:00'的日期時間。結果的單位(整數)由單位參數給出。單位的合法值與TIMESTAMPADD()函數描述中列出的相同。

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885

unit也可以HOUR這是你的意見,一問什麼。

+0

對不起,但我詢問整個DATETIME :( – Mike 2010-03-13 15:28:22

+0

@ Mike:看到我更新的回答 – 2010-03-13 15:30:58

+0

sweet :) 我把你的答案標記爲正確:) 謝謝 – Mike 2010-03-13 15:33:03

34

如果 「轉換成秒」,你的意思是 「轉換爲UNIX Timestamp(即自1970-01-01秒數),那麼你可以使用UNIX_TIMESTAMP功能:

select UNIX_TIMESTAMP(your_datetime_field) 
from your_table 
where ... 


而且,爲了完整起見,要將Unix時間戳轉換爲日期時間,可以使用FROM_UNIXTIME函數。

+0

不錯 當我想在HOURS的兩個日期時間的差異,我應該使用類似的東西? : select(unix_timestamp('2010-01-02 18:00:00') - unix_timestamp('2010-01-01 16:00:00'))/ 60/60; – Mike 2010-03-13 15:27:32

+0

我想TIMESTAMPDIFF函數應該可以做到這一點:它允許指定所需的單位(請參閱http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff ) – 2010-03-13 15:34:27

+0

謝謝你,菲利克斯已經建議使用timesteampdiff,那就是我想要的 – Mike 2010-03-13 15:36:45

2

函數UNIX_TIMESTAMP(datetime)返回unix時間,恰好是自1970年1月1日0000 UTC以來的秒數。這可能是你所需要的,但如果你以後2037

2

在MySQL 5.5開始。0您可以使用to_seconds()

TO_SECONDS(FIELD_NAME) 

FIELD_NAME必須是DATETIME

6

使用TIME_TO_SEC在以前版本的MySQL

SELECT TIME_TO_SEC(時間列)FROM表

0

我創造我自己的查詢爲您的問題:

select (hour(*colname*)*3600 + minute(*colname*)*60 + second(*colname*)) 
from widgets 
where id=1; 
  • 如果您必須採取特定的行,請使用id=1
  • 輸出將以秒爲單位。
+0

這個問題早已得到解答,接受的答案也涉及日子,而不僅僅是小時和分鐘。該OP在評論中澄清說,他想計算兩個日期時間之間的差異,以小時爲單位。 – 2017-04-11 15:53:11