MYSQL - 将日期时间转换为秒数

44

我在谷歌搜索和阅读MySQL参考手册后,无法找到如何获取MySQL中DATETIME以秒为单位的值

我的意思不是从datetime中提取秒数,而是将datetime转换为秒数。

7个回答

50
如果您所说的"转换为秒"是指"转换为UNIX时间戳"(即自1970年01月01日以来的秒数),则可以使用UNIX_TIMESTAMP函数:
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...


为了完整起见,要将Unix时间戳转换为日期时间,您可以使用FROM_UNIXTIME函数。


当我想要计算两个日期时间之间的小时差异时,我应该使用类似以下的语句吗?选择(unix_timestamp('2010-01-02 18:00:00') - unix_timestamp('2010-01-01 16:00:00'))/60/60; - Mike
我想TIMESTAMPDIFF函数应该可以解决问题:它允许指定所需的单位(请参见http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff) - Pascal MARTIN
谢谢,Felix已经建议使用timesteampdiff了,这正是我想要的。 - Mike
1
不客气 :-) (嗯,从你的问题中很难猜出你想要找出两个日期时间之间的区别 ^^) - Pascal MARTIN
我最初想把它写成(datetime_to_sec(value1) - datetime_to_sec(value2))6024,但现在看来那是垃圾代码 :)) - Mike

43

如果您想计算两个DATETIME值之间的差异,请使用TIMESTAMPDIFF

TIMESTAMPDIFF(unit,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,这也是您在其中一条评论中提出的要求。

单位参数可以是以下任何一个:

  • MICROSECOND(微秒)
  • SECOND(秒)
  • MINUTE(分钟)
  • HOUR(小时)
  • DAY(天)
  • WEEK(周)
  • MONTH(月)
  • QUARTER(季度)
  • YEAR(年)

当然,其他选项的有用程度将由数据的细粒度决定。例如,如果您没有在DATETIME值中存储微秒,则“MICROSECOND”将只有有限的用途。


抱歉,但我是在询问整个DATETIME :( - Mike

7

在之前的MySQL版本中,可以使用TIME_TO_SEC函数。

使用如下语句:SELECT TIME_TO_SEC(time列) FROM 表名


4

3

UNIX_TIMESTAMP(日期时间)函数返回Unix时间戳,即自1970年1月1日0000 UTC以来的秒数。如果您处理的是出生日期、历史日期或2037年之后的日期,则可能不适用。


2

从mysql 5.5.0开始,您可以使用to_seconds()函数。

TO_SECONDS(FIELD_NAME)

字段名必须是DATETIME类型。


0
我已经为你的问题创建了自己的查询:
SELECT HOUR(`colname`) * 3600 + MINUTE(`colname`) * 60 + SECOND(`colname`)
FROM widgets
WHERE id = 1;
  • 如果你需要获取特定的行,请使用id = 1
  • 输出将以秒为单位。

这个问题早就被回答了,而且被接受的答案也涉及到天数,不仅仅是小时和分钟。原帖作者在评论中澄清他想要计算两个日期时间之间的小时差异。 - Fabio says Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接