mysql字符串转为数字的三种方法、字符串转日期

隐式转换

在MySQL中,使用+0运算符可以将一个非数字的值隐式地转换为数字。这在进行数学运算或比较操作时非常有用。

需要注意的是,在使用+0进行隐式转换时,MySQL会尽可能将字符串转换为数字。如果字符串不能转换为数字,则会返回0。

python 复制代码
mysql> select "000123456";
+-----------+
| 000123456 |
+-----------+
| 000123456 |
+-----------+
1 row in set (0.00 sec)
python 复制代码
mysql> select "000123456"+0;
+---------------+
| "000123456"+0 |
+---------------+
|        123456 |
+---------------+
1 row in set (0.00 sec)

显式转换

CAST

在MySQL中,CAST函数用于将一个表达式转换为指定的数据类型。它可以用于将一个值转换为不同的数据类型,例如整数、浮点数、字符串等。CAST函数的语法如下:

python 复制代码
CAST(expression AS data_type)

其中,expression是要进行转换的表达式,data_type是要转换成的目标数据类型。

使用CAST函数时,需要注意以下几点:

如果转换失败,MySQL会返回一个NULL值。例如,将一个非数字字符串转换为整数时会失败。

CAST函数在执行时可能会导致精度损失或溢出,特别是将一个大的值转换为小的数据类型时。

在某些情况下,可以直接使用类型转换操作符(如+0)来进行类型转换,这通常比使用CAST函数更高效。

python 复制代码
mysql> select CAST("000123456" AS SIGNED);
+-----------------------------+
| CAST("000123456" AS SIGNED) |
+-----------------------------+
|                      123456 |
+-----------------------------+
1 row in set (0.01 sec)

mysql> select CAST("000123456" AS UNSIGNED);
+-------------------------------+
| CAST("000123456" AS UNSIGNED) |
+-------------------------------+
|                        123456 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select CAST("-000123456" AS SIGNED);
+------------------------------+
| CAST("-000123456" AS SIGNED) |
+------------------------------+
|                      -123456 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select CAST("-000123456" AS DECIMAL);
+-------------------------------+
| CAST("-000123456" AS DECIMAL) |
+-------------------------------+
|                       -123456 |
+-------------------------------+
1 row in set (0.02 sec)

mysql> select CAST("000123456" AS DECIMAL);
+------------------------------+
| CAST("000123456" AS DECIMAL) |
+------------------------------+
|                       123456 |
+------------------------------+
1 row in set (0.00 sec)

CONVERT

在MySQL中,可以使用CONVERT()函数来转换数据类型或格式。该函数用于将一个表达式转换为指定的数据类型或格式。
CONVERT()函数的语法如下:

python 复制代码
CONVERT(expression, data_type)

其中,expression是要进行转换的表达式,data_type是要转换成的目标数据类型。

需要注意的是,CONVERT()函数可以用于日期和时间类型的转换,并且可以指定日期格式。

python 复制代码
mysql> select CONVERT("000123456", SIGNED);
+------------------------------+
| CONVERT("000123456", SIGNED) |
+------------------------------+
|                       123456 |
+------------------------------+
1 row in set (0.02 sec)

mysql> select CONVERT("000123456", UNSIGNED);
+--------------------------------+
| CONVERT("000123456", UNSIGNED) |
+--------------------------------+
|                         123456 |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select CONVERT("000123456", DECIMAL);
+-------------------------------+
| CONVERT("000123456", DECIMAL) |
+-------------------------------+
|                        123456 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select CONVERT("-000123456", SIGNED);
+-------------------------------+
| CONVERT("-000123456", SIGNED) |
+-------------------------------+
|                       -123456 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select CONVERT("-000123456", DECIMAL);
+--------------------------------+
| CONVERT("-000123456", DECIMAL) |
+--------------------------------+
|                        -123456 |
+--------------------------------+
1 row in set (0.00 sec)

字符串转日期

下面是一个使用CONVERT函数将日期从一种格式转换为另一种格式的示例:

sql 复制代码
mysql> SELECT CONVERT('2023-11-23', DATE) AS converted_date;
+----------------+
| converted_date |
+----------------+
| 2023-11-23     |
+----------------+
1 row in set (0.00 sec)

在上面的示例中,日期'2019-12-31'被转换为DATE格式,并存储在名为converted_date的列中。

你还可以在转换时使用其他日期格式。下面是一些常见的日期格式:

DATE: 日期格式 (YYYY-MM-DD)

TIME: 时间格式 (HH:MM:SS)

DATETIME: 日期时间格式 (YYYY-MM-DD HH:MM:SS)

YEAR: 年份格式 (YYYY)

如果你想将日期转换为特定的格式,只需在CONVERT函数的第二个参数中指定所需的格式。

参考

https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert
https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast

相关推荐
worilb1 小时前
Win下使用同一套MySQL创建第二个独立实例
mysql
风哥2号2 小时前
数据库教程FGMT40‑MySQL性能优化之性能基准测试
数据库·mysql
葡萄成熟时 !2 小时前
MySQL 全套学习笔记(JDBC+连接池)
mysql
梦帮科技3 小时前
一次性会员支付系统的可靠性设计:幂等、金额校验、Webhook 与链上确认
人工智能·神经网络·mysql·区块链·建造者模式·合成复用原则·加密货币
初願致夕霞3 小时前
MySQL_事务(MVCC机制详解)
数据库·mysql
geovindu3 小时前
sql: Data Modeling Patterns using mysql
sql·mysql·设计模式·数据库开发
今年下半年3 小时前
mysql数据库备份详细操作流程
学习·mysql
Kamille Bidan3 小时前
平台核心业务表结构设计
mysql·heidisql
梦帮科技4 小时前
从提示词到可复现音乐工作流:RNOISE 2.0 的 Prompt Engineering 架构
人工智能·python·mysql·ci/cd·架构·node.js·numpy
军训猫猫头5 小时前
C# 封装 MySQL 自动写入与查询工具类(基于 MySqlConnector)
mysql·c#·.net·wpf