【发布时间】:2018-03-23 14:07:46
【问题描述】:
我正在尝试在 MySQL 客户端版本:5.1.41 中使用 CASE 语句格式化我的日期。 review_on int(11) 默认 0 用于存储 epoch/unix 时间戳。结果不是得到 0 或 dd/mm/yyyy,而是在 3 前面加上真结果,即如果真结果为 0,则返回 30;如果是 10 则返回 3130...
我检查了各种链接以及SQL case when FROM(UNIX_TIME)
@Martin Orem 的结论是升级 sql 版本。它是唯一的解决方案还是我们仍然可以解决这个问题并获得所需的输出?任何帮助将不胜感激。
mysql>SELECT reviewed_on AS reviewed_on FROM table_name
+----------------------+
| reviewed_on |
+----------------------+
| 0 |
+----------------------+
mysql>SELECT FROM_UNIXTIME(reviewed_on) AS reviewed_on FROM table_name
+----------------------+
| reviewed_on |
+----------------------+
| 1970-01-01 01:00:00 |
+----------------------+
mysql>SELECT CASE reviewed_on WHEN 0 THEN 0 ELSE 1 END AS reviewed_on
FROM table_name
+----------------------+
| reviewed_on |
+----------------------+
| 0 |
+----------------------+
mysql>SELECT CASE reviewed_on WHEN 0 THEN 0 ELSE FROM_UNIXTIME(reviewed_on, '%d/%m/%Y') END AS reviewed_on
FROM table_name
+----------------------+
| reviewed_on |
+----------------------+
| 30 |
+----------------------+
mysql>SELECT CASE reviewed_on WHEN 0 THEN 10 ELSE DATE_FORMAT(FROM_UNIXTIME(reviewed_on), '%d/%m/%Y') END AS reviewed_on
FROM table_name
+----------------------+
| reviewed_on |
+----------------------+
| 3130 |
+----------------------+
【问题讨论】:
标签: mysql