MySQL-格式化数据 format()与date_format()

一、format() 的定义与用法

1、FORMAT(数字,‘格式’) 函数将数字格式化为像"#,###,###.##"这样的格式,

mysql> select ename,format(sal,'$999,999') as sal from emp;
+--------+-------+
| ename  | sal   |
+--------+-------+
| SMITH  | 800   |
| ALLEN  | 1,600 |
| WARD   | 1,250 |
| JONES  | 2,975 |
| MARTIN | 1,250 |
| BLAKE  | 2,850 |
| CLARK  | 2,450 |
| SCOTT  | 3,000 |
| KING   | 5,000 |
| TURNER | 1,500 |
| ADAMS  | 1,100 |
| JAMES  | 950   |
| FORD   | 3,000 |
| MILLER | 1,300 |
+--------+-------+
14 rows in set, 14 warnings (0.00 sec)

2、四舍五入到指定的小数位数,然后将结果作为字符串返回。

mysql> select format(120.346374,2);
+----------------------+
| format(120.346374,2) |
+----------------------+
| 120.35               |
+----------------------+
1 row in set (0.00 sec)

二、date_format(日期类型数据,'日期格式')

date类型 转换为具有一定格式的varchar类型。

这个函数通常使用在查询日期方面。设置展示的日期格式

mysql> select id,name,birth from t_user;
+------+----------+------------+
| id   | name     | birth      |
+------+----------+------------+
|    1 | zhangsan | 1990-10-01 |
|    2 | lisi     | 1990-10-01 |
+------+----------+------------+
2 rows in set (0.00 sec)

以上SQL语句其实是进行了默认的日期格式化。自动将数据库中的date类型转换成varchar类型

并采用 mysql 默认的日期格式:' %Y-%m-%d '

若采用特定格式输出则需要加date_format()函数:

mysql> select id,name,date_format(birth,'%m/%d/%Y') as birth from t_user;
+------+----------+------------+
| id   | name     | birth      |
+------+----------+------------+
|    1 | zhangsan | 10/01/1990 |
|    2 | lisi     | 10/01/1990 |
+------+----------+------------+
2 rows in set (0.00 sec)

三、str_to_date('字符串日期','日期格式')

mysql的日期格式:

%Y 年

%m 月

%d 日

%h 时

%i 分

%s 秒

将字符串varchar类型转换为date类型

通常使用在插入insert 方面,因为插入的时候需要一个日期类型的数据,需要通过该函数将字符串转换成date。

当然,如何你提供的日期字符串是这个格式,str_to _date 函数就不需要了!!!

mysql> desc t_user;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(32) | YES  |     | NULL    |       |
| birth | date        | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t_user(id,name,birth) values(1,'zhangsan','01-10-1990');
ERROR 1292 (22007): Incorrect date value: '01-10-1990' for column 'birth' at row 1

mysql> insert into t_user(id,name,birth) values(1,'zhangsan',str_to_date('01-10-1990','%d-%m-%Y'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_user(id,name,birth) values(2,'lisi','1990-10-01');
Query OK, 1 row affected (0.00 sec)

猜你喜欢

转载自blog.csdn.net/nuhao/article/details/133052757