【问题标题】:write a query that converts a timestamp to a date and add hours编写一个查询,将时间戳转换为日期并添加小时
【发布时间】:2013-01-25 11:41:39
【问题描述】:

我希望有人可以帮助我解决这个问题。我的 sql 和编程知识非常初级。

我写了一个看起来像这样的查询。

SELECT FROM_UNIXTIME(EventStartDate)                     
FROM mytable

这可以满足我的需要 - 将时间戳转换为可读日期,但时间是 5 小时。我想我的时间戳是格林威治标准时间,我在 -5:00。有没有什么方法可以增加 5 个小时并转换为可读日期?

感谢您对此提供的任何帮助。

【问题讨论】:

    标签: mysql time timezone timestamp


    【解决方案1】:

    试试这个:

    SELECT DATE_FORMAT(CAST(EventStartDate AS datetime), '%Y %M %D')  AS Date FROM mytable;
    
    SELECT DATE_FORMAT(CAST(EventStartDate AS datetime), '%Y %m %d') AS Date FROM mytable;
    
    
    SELECT DATE_FORMAT(CONVERT_TZ(EventStartDate,'+00:00','-05:00'),'%Y %m %d') AS Date FROM mytable;
    
    
    SELECT DATE_FORMAT(CONVERT_TZ(EventStartDate,'+00:00','-05:00'),'%Y %M %D') AS Date FROM mytable;
    
    -- with time
    
    SELECT DATE_FORMAT(CAST(EventStartDate AS datetime), '%Y %M %D %h:%i:%s') AS Date_time FROM mytable;
    
    SELECT DATE_FORMAT(CAST(EventStartDate AS datetime), '%Y-%m-%d %h:%i:%s') AS Date_time FROM mytable;
    
    
    SELECT DATE_FORMAT(CONVERT_TZ(EventStartDate,'+00:00','-05:00'),'%Y-%m-%d %h:%i:%s') AS Date_time FROM mytable;
    
    
    SELECT DATE_FORMAT(CONVERT_TZ(EventStartDate,'+00:00','-05:00'),'%Y %M %D %h:%i:%s') AS Date_time FROM mytable;
    

    可读格式有点不明确,所以我尝试了一些您可能喜欢的格式。你甚至可能使用不同的语言,所以这很难回答。例如,您可以使用 SET lc_time_names = 'es_ES';SELECT DATE_FORMAT(CONVERT_TZ(EventStartDate,'+00:00','-05:00'),'%Y %M %D') FROM mytable; 以西班牙语 (PHP/MySQLi: SET lc_time_names and DATE_FORMAT() into a mysqli query?) 获取您的日期。或者,如果您使用 PHP,您可以使用它以您自己的语言重新格式化。

    SQL FIDDLE DEMO

    在您的标题中,您说您需要将时间戳转换为日期。但是,您使用 from_unixtime,所以我的印象是您可能使用 VARCHAR 或 INT 作为列类型。在这种情况下,你应该试试这个:

    SELECT CONVERT_TZ(FROM_UNIXTIME(EventStartDate_INT),'+00:00','-05:00') AS Date_time FROM mytable;
    
    SELECT CONVERT_TZ(FROM_UNIXTIME(EventStartDate_VARCHAR),'+00:00','-05:00') AS Date_time FROM mytable;
    
    SELECT date_format(CONVERT_TZ(FROM_UNIXTIME(EventStartDate_INT),'+00:00','-05:00'),'%Y-%m-%d %h:%i:%s') AS Date_time FROM mytable;
    
    SELECT date_format(CONVERT_TZ(FROM_UNIXTIME(EventStartDate_VARCHAR),'+00:00','-05:00'), '%Y-%m-%d %h:%i:%s') AS Date_time FROM mytable; 
    

    SQL FIDDLE DEMO

    【讨论】:

      【解决方案2】:

      根据this page,您应该可以像这样将日期增加 5 小时:

      SELECT FROM_UNIXTIME(EventStartDate) + INTERVAL 5 HOUR FROM mytable ;
      

      SELECT DATE_ADD(FROM_UNIXTIME(EventStartDate), INTERVAL 5 HOUR) FROM mytable ;
      

      【讨论】:

        猜你喜欢
        • 2011-10-20
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 2020-10-19
        相关资源
        最近更新 更多