编写一个将时间戳转换为日期并添加小时的查询

时间:2013-02-10 02:26:59

标签: mysql time timezone timestamp

我希望有人可以帮助我。我对sql和编程的了解非常简陋。

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

SELECT FROM_UNIXTIME(EventStartDate)                     
FROM mytable

这就是我需要的 - 将时间戳转换为可读日期,但时间是5小时。我想我的时间戳是GMT,我在-5:00。有没有办法写这个可以增加5个小时以及转换成可读日期?

我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

根据this page,您应该可以将5个小时添加到这样的日期:

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

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

答案 1 :(得分:0)

试试这个:

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