连接日期函数mysql

时间:2013-01-22 08:04:43

标签: mysql sql date datetime

mysql查询返回意外。我正在尝试连接包含日期查询的几个字符串,如下所示:

mysql> select month(timestamp) +'-'+ day(timestamp) + '-' + 
       year(timestamp) as date FROM table ORDER BY timestamp DESC LIMIT 1;

我得到一个4位数的结果,我假设这是预期结果的总和:

+------+
| date |
+------+
| 2035 |
+------+

我也尝试将每一个投射为CHAR但不起作用:

mysql> select CAST(month(timestamp) as CHAR) +'-'+ CAST(day(timestamp) as CHAR) + '-' + 
CAST(year(timestamp) as CHAR) as date FROM table ORDER BY timestamp DESC LIMIT 1;

有人能让我知道我做错了什么吗? ......我想如何修复它也会很好:)

2 个答案:

答案 0 :(得分:5)

在MySQL中,使用CONCAT_WS

CONCAT_WS('-', month(timestamp),day(timestamp),year(timestamp))

查询,

SELECT CONCAT_WS('-', month(timestamp),day(timestamp),year(timestamp)) AS DATE
FROM   tablename
ORDER  BY timestamp DESC 
LIMIT  1

或使用DATE_FORMAT

SELECT DATE_FORMAT(timestamp, '%m-%d-%Y') AS DATE
FROM   Table1
ORDER  BY timestamp DESC 
LIMIT  1

其它(一个或多个):

答案 1 :(得分:2)

使用CONCAT,DAY,MONTH,YEAR等来格式化日期是愚蠢的。

如果timestamp是包含UNIX时间戳的整数列,请使用:

SELECT DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%m-%d-%Y') AS `Formatted Date`
...

如果timestamp是日期/日期时间列,请使用:

SELECT DATE_FORMAT(`timestamp`, '%m-%d-%Y') AS `Formatted Date`
...