CAST()
和 CONVERT()
函数用于基本数据类型之间的转换;DATE_FORMAT()
用于日期格式化;FORMAT()
用于数字格式化。,,示例代码:,“sql, 将字符串转换为整数,SELECT CAST('123' AS UNSIGNED);,, 将日期格式化为特定格式,SELECT DATE_FORMAT(NOW(), '%Y%m%d %H:%i:%s');,, 将数字格式化为带有千位分隔符的字符串,SELECT FORMAT(1234567.89, 2);,
“MySQL数据库支持多种格式转换,主要包括日期时间格式转换、数字格式转换和字符串格式转换,以下是对这些转换的详细解释:
日期时间格式转换
1、日期转字符串:使用DATE_FORMAT函数将日期类型转换为特定格式的字符串,将当前日期格式化为’YYYYMMDD’的形式:
SELECT DATE_FORMAT(NOW(), '%Y%m%d');
这将返回类似"20231001"的结果。
2、字符串转日期:使用STR_TO_DATE函数将字符串转换为日期类型,将字符串’20231001’转换为日期类型:
SELECT STR_TO_DATE('20231001', '%Y%m%d');
这将返回一个日期类型的值。
3、Unix时间戳转换:使用UNIX_TIMESTAMP函数将日期类型转换为Unix时间戳,将日期’20231001’转换为Unix时间戳:
SELECT UNIX_TIMESTAMP('20231001');
这将返回一个整数,表示从1970年1月1日到该日期的秒数。
4、时间单位转换:使用TIME_TO_SEC和SEC_TO_TIME函数进行时间单位的转换,将时间值转换为秒数:
SELECT TIME_TO_SEC('12:34:56');
这将返回秒数。
数字格式转换
1、数字格式化:使用FORMAT函数将数字格式化为指定的格式,将数字1234.56格式化为带有千位分隔符和小数点后两位的形式:
SELECT FORMAT(1234.56, 2);
这将返回"1,234.56"。
2、舍入数字:使用ROUND函数将数字按照指定的精度进行舍入,将数字1234.56四舍五入到小数点后一位:
SELECT ROUND(1234.56, 1);
这将返回1234.6。
3、数字转字符串:使用CAST或CONVERT函数将数字转换为字符串,将数字1234转换为字符串:
SELECT CAST(1234 AS CHAR);
这将返回字符串"1234"。
字符串格式转换
1、大小写转换:使用LOWER和UPPER函数将字符串转换为小写或大写,将字符串"Hello World"转换为小写:
SELECT LOWER('Hello World');
这将返回"hello world"。
2、字符替换:使用REPLACE函数将字符串中的指定字符或子串替换为新的字符或子串,将字符串"Hello World"中的"World"替换为"MySQL":
SELECT REPLACE('Hello World', 'World', 'MySQL');
这将返回"Hello MySQL"。
3、字符串截取:使用SUBSTRING函数从字符串中截取指定的子串,从字符串"Hello World"中截取前5个字符:
SELECT SUBSTRING('Hello World', 1, 5);
这将返回"Hello"。
在进行数据格式转换时,应确保转换的数据能够正确地表示目标数据的含义,同时也要考虑数据的精度和范围是否会发生变化,转换可能会导致数据丢失或损失精度,因此在进行数据格式转换时应谨慎操作,确保数据的完整性和准确性。
原始数据格式 | 转换后数据格式 | 转换示例 |
DATE ‘YYYYMMDD’ | TIMESTAMP | DATE ‘20230401’ 转换为 TIMESTAMP ‘20230401 00:00:00’ |
DATE ‘YYYYMMDD HH:MM:SS’ | DATETIME | DATE ‘20230401 12:34:56’ 转换为 DATETIME ‘20230401 12:34:56’ |
CHAR(10) | VARCHAR(10) | CHAR(10) ‘1234567890’ 转换为 VARCHAR(10) ‘1234567890’ |
INT | DECIMAL | INT 123 转换为 DECIMAL(10,2) 123.00 |
FLOAT | DOUBLE | FLOAT 123.456 转换为 DOUBLE 123.456 |
ENUM(‘value1’, ‘value2’, ‘value3’) | SET(‘value1’, ‘value2’, ‘value3’) | ENUM(‘value1’, ‘value2’, ‘value3’) ‘value2’ 转换为 SET(‘value1’, ‘value2’, ‘value3’) ‘value2’ |
TEXT | MEDIUMTEXT | TEXT ‘This is a text’ 转换为 MEDIUMTEXT ‘This is a text’ |
TINYINT | SMALLINT | TINYINT 1 转换为 SMALLINT 1 |
BLOB | MEDIUMBLOB | BLOB ‘This is a binary large object’ 转换为 MEDIUMBLOB ‘This is a binary large object’ |
BOOLEAN | TINYINT(1) | BOOLEAN FALSE 转换为 TINYINT(1) 0 |
TIMESTAMP | DATETIME | TIMESTAMP ‘20230401 00:00:00’ 转换为 DATETIME ‘20230401 00:00:00’ |
TIME | DATETIME | TIME ’12:34:56′ 转换为 DATETIME ‘20230401 12:34:56’ |
YEAR | DATE | YEAR 2023 转换为 DATE ‘20230101’ |
JSON | VARCHAR | JSON ‘{“name”:”John”, “age”:30}’ 转换为 VARCHAR ‘{“name”:”John”, “age”:30}’ |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1216454.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复