MySQL 8 中的数据类型转换 | 学习函数CAST() 和 CONVERT()

上周学MySQL8 数据类型转换。

CAST函数: 用途:转类型。
语法:俩参数。
第一个原数据,第二个目标类型。
场景:比如把文本转固定长度数字。
比如2 02 3 年5 月1 0号,我用CAST('1 2 3 ' AS UNSIGNED),转无符号整数。

CONVERT函数: 用途:转类型和字符集。
语法:俩参数,类似CAST。
但能加USING转字符集。
场景:比如2 02 3 年5 月1 1 号,我用CONVERT('abc', USING Latin1 ),转拉丁1 编码。

建议: 转类型用CAST。
转字符集用CONVERT。
我那个朋友搞混过,差点误操作。

算了。

MySQL日期转换方案 13位时间戳转标准格式的完整教程

直接说: MySQL转换1 3 位时间戳到标准日期格式: 1 . 除以1 000变1 0位秒级时间戳。
2 . 用FROM_UNIXTIME()函数转格式。

标准格式例子:
SELECT FROM_UNIXTIME(your_1 3 _digit_timestamp/1 000) AS standard_datetime FROM your_table_name;
自定义格式:
SELECT DATE_FORMAT(FROM_UNIXTIME(your_1 3 _digit_timestamp/1 000), '%Y-%m-%d %H:%i:%s') AS formatted_datetime_full, DATE_FORMAT(FROM_UNIXTIME(your_1 3 _digit_timestamp/1 000), '%Y-%m-%d') AS formatted_date_only, DATE_FORMAT(FROM_UNIXTIME(your_1 3 _digit_timestamp/1 000), '%H:%i:%s') AS formatted_time_only FROM your_table_name;
时区陷阱:统一存储UTC时间,应用层转时区。

类型陷阱:用BIGINT存储1 3 位时间戳。

NULL处理:COALESCE()结合FROM_UNIXTIME(0)。

性能陷阱:避免函数在WHERE,转时间戳后直接比较。

最佳实践:用BIGINT存1 3 位,INT存1 0位。
统一UTC存储,查询优化,数据清洗规范。