2010-03-13 96 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