【问题标题】:SQL convert INT to datetimeSQL 将 INT 转换为日期时间
【发布时间】:2012-05-29 07:23:58
【问题描述】:

我有 1323648000,它是 int(10)。我需要能够将其转换为某种日期格式。类似于 dd/hh/yy hh:mm:ss。我在这里尝试了一些例子,但我似乎无法让它发挥作用。我试图将它转换为 varchar(10) 并转换但没有。 Excel 还输出########。那是不是数字不对?

SELECT
engine4_openid_statusstats.openidstat_id,
CONVERT(datetime,CAST(engine4_openid_statusstats.openidstat_time AS varchar(10),3),
engine4_openid_services.openidservice_id,
engine4_openid_services.openidservice_name
FROM
engine4_openid_statusstats ,
engine4_openid_services

【问题讨论】:

  • 什么关系型数据库?看起来像 MS SQL Server...

标签: sql datetime int


【解决方案1】:

这看起来像是 Unix 风格的基于纪元的时间戳,即自 1970 年以来的秒数。

转换是特定于 RDBMS 的。使用 SQLITE 你会做的

select datetime( 1323648000, 'unixepoch' );

这会产生 2011-12-12 00:00:00 (GMT)。

查看您的 RDBMS 文档以了解日期时间转换函数。

【讨论】:

  • 你是对的。这是一个unix时间戳。我使用了'FROM UNIXTIME(engine4_openid_statusstats.openidstat_time)'并且它有效。谢谢!
【解决方案2】:

如果确实将其存储为 Epoch Time(看起来确实如此),则这些是自 1970 年 1 月 1 日以来的秒数。您可以通过将秒数添加到该日期来将其转换为日期时间。

SELECT DATEADD(SS, 1323648000, '01/01/1970')

【讨论】:

    【解决方案3】:
    TO_CHAR(column_name, 'DD/MM/YYYY hh:mm:ss')
    

    【讨论】:

    • 没有工作 :( SELECT engine4_openid_statusstats.openidstat_id, TO_CHAR(CAST(engine4_openid_statusstats.openidstat_time AS varchar(10),3), 'DD/MM/YYYY hh:mm:ss'), engine4_openid_services.openidservice_id , engine4_openid_services.openidservice_name FROM engine4_openid_statusstats , engine4_openid_services
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多