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;
有人能让我知道我做错了什么吗? ......我想如何修复它也会很好:)
答案 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`
...