一般有这几种转换:
一、数值型与字符型的转化
### 数值型转为字符型: 65 –> \'65\' select cast(65 as char); 65 –> \'A\' select char(65); 65.23 --> \'65.23\' select cast(65.23 as char(10)); ### 字符型转为数值型: \'65.23\' –> 65 select cast(\'65.23\' as signed int); \'65.23\' --> 65.23 select cast(\'65.23\' as decimal(5,2)); \'A\' –> 65 select ASCII(\'A\');
二、数值型与日期和时间型的转化
### 数值型转为日期和时间型: 20190903 --> 日期2019-09-03 select cast(20190903 as date); 815 --> 时间00:08:15 select cast(815 as time); 0200815002356 --> 时间戳2020-08-15 00:23:56 select cast(20200815002356 as datetime); ##把Unix时间戳转为日期 1628434346325 --> 2021-08-08 22:52:26 select from_unixtime(1628434346325/1000, \'%Y-%m-%d %H:%i:%s\'); ### 日期时间型转为数值型: 如:2019-09-03 –> 20190903 select cast(current_date() as signed); 如:14:04:10 –> 140410 select cast(current_time() as signed); 如:2019-09-03 14:04:10 --> 20190903140410 select cast(now() as signed); 如:如:2019-09-03 –> 2019 select year(current_date()); 如:14:04:10 –> 10 select second(current_time); ##把日期类型转为Unix时间戳 select unix_timestamp(\'2019-09-03 11:47:30\');
三、字符型与日期和时间型的转化
### 字符型转换为日期时间型: ‘20190903’ --> 日期2019-09-03 select cast(\'20190903\' as date); \'2019-09-03\' --> 日期2019-09-03 select cast(\'2019-09-03\' as date); ‘2109/09/03’ --> 日期2019-09-03 select cast(\'2019/09/03\' as date); ‘2019#09#03’ --> 日期2019-09-03 select cast(\'2019#09#03\' as date); \'00:08:15\' --> 时间00:08:15 select cast(\'00:08:15\' as time); \'20210808225226\' --> 时间戳2020-08-15 00:08:15 select CAST(\'20210808225226\' AS DATETIME); \'2021-08-08 22:52:26\' --> 时间戳2021-08-08 22:52:26 select cast(\'2021-08-08 22:52:26\' as datetime); ### 日期时间型转为字符型: 如:日期2019-09-03 –> \'20190903\' select DATE_FORMAT(CURRENT_DATE(),\'%Y%m%d\') 如:日期2019-09-03 --> \'2019-09-03\' select CAST(CURRENT_DATE() AS DATE); select DATE_FORMAT(CURRENT_DATE(),\'%Y-%m-%d\'); 如:日期2020-08-15\' --> \'2020-08\' select DATE_FORMAT(CURRENT_DATE(),\'%Y-%m\'); 时间00:08:15 --> \'00:08:15\' select DATE_FORMAT(NOW(),\'%H:%i:%s\'); select CAST(CURRENT_TIME() AS CHAR); 时间戳2020-08-15 00:08:15 –> \'20210808225226\' select DATE_FORMAT(NOW(),\'%Y%m%d%H%i%s\') 时间戳2021-08-08 22:52:26 --> \'2021-08-08 22:52:26\' select CAST(NOW() AS CHAR); select DATE_FORMAT(NOW(),\'%Y-%m-%d %H:%i:%s\'); 日期2020-08-15 --> Thursday select DAYNAME(CURRENT_DATE()); 日期2020-08-15 --> August select MONTHNAME(CURRENT_DATE());