2

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;

誰かが私が間違っていることを教えてもらえますか?...そして私はそれを修正する方法もいいと思います:)

4

2 に答える 2

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

その他:

于 2013-01-22T08:06:37.383 に答える
2

CONCAT、DAY、MONTH、YEARなどを使用して日付をフォーマットするのはばかげています。

timestampUNIXタイムスタンプを含む整数列の場合は、次を使用します。

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

timestampが日付/日時列の場合は、次を使用します。

SELECT DATE_FORMAT(`timestamp`, '%m-%d-%Y') AS `Formatted Date`
...
于 2013-01-22T08:13:03.823 に答える