试试这个:
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