mysql 查询日期在结果中加入汉字“年”“月”“日”

mysql 查询日期在结果中加入汉字“年”“月”“日”
时间格式为:2018-05-11 08:00:00

select DATE_FORMAT(now(), '%Y年%m月%d日')

先把“年月日”格式的字符串转换为 STR_TO_DATE 可以处理的字符串。比如可以使用 REPLACE 函数把字符串中的“年月日”替换为“-”。

REPLACE(REPLACE(REPLACE(releaseDate,'年','-'),'月','-'),'日','')

然后再用 STR_TO_DATE 函数把字符串转换为 Date类型。

str_to_date(REPLACE(REPLACE(REPLACE(releaseDate,'年','-'),'月','-'),'日',''),'%Y-%m-%d')

to_char(updatetime,'yyyy')||'年'||to_char(updatetime,'MM')||'月'||to_char(updatetime,'dd')||'日' as updatetime

楼上基本解决问题了,但是建议最好不要在sql中这样做,而是放到代码中处理,复用性更好

这样在sql语句中转很拖慢sql语句的查询时间的,建议在程序中转化。

select*from year(new)-year(birthday)

分别用YEAR,MONTH,DAY函数,例如
mysql> select * from test;
+------------+
| DATE |
+------------+
| 2011-01-19 |
| 2011-01-19 |
| 2010-06-01 |
| 2010-06-10 |
| 2010-07-10 |
+------------+

mysql> select YEAR(DATE) from test;
+------------+
| YEAR(DATE) |
+------------+
| 2011 |
| 2011 |
| 2010 |
| 2010 |
| 2010 |
+------------+
月:
mysql> select month(DATE) from test ;
+-------------+
| month(DATE) |
+-------------+
| 1 |
| 1 |
| 6 |
| 6 |
| 7 |
+-------------+
日:
mysql> select day(DATE) from test;
+-----------+
| day(DATE) |
+-----------+
| 19 |
| 19 |
| 1 |
| 10 |
| 10 |
+-----------+

建议还是在程序中解决,当然sql语句上面也已经实现。

感觉可以直接在后台去写如php,不要让mysql做这个事

直接去程序中将查出来的值进行format会比较好

select DATE_FORMAT(数据库中的日期字段, '%Y年%m月%d日')
from 表