MySQL字符varchar转换为int、date

MySQL字符varchar转换为int、date,第1张

1.varchar转int

函数:cast

用法:cast(字段 as SIGNED INTEGER)

或者cast(字段 as UNSIGNED INTEGER))

例如:SELECT CAST(DATE_FORMAT(NOW(),"%Y%m%d") as SIGNED INTEGER)

2.varchar转date

函数:str_to_date(字段,字符串格式)

用法:select str_to_date(字段,'%Y-%m-%d') from tablea limit 100;

根据日期进行选取

选取日期大于2019年的所有字段

例如:select * from tablea where str_to_date(tablea.日期,'%Y-%m-%d')>'2019-00-00'

mysql的int根据计算机的内部字长和编译器的版本,在内存中可能占2或4个字节。在一般电脑中,int占用32字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1];在微型机中,int占用32字节,16比特,数据范围为-32768~32767[-2^15~2^15-1]。

扩展资料:

如果从mysql中获取的数超出了int的范围,将会被解释为float。同样如果执行的SQL运算结果超出了int范围,也会返回float。要明示地将一个值转换为int,需要使用SQL语句convert(int,数值)来强制转换。

如果浮点数超出了整数范围(通常为+/-2.15e+9=2^31),则结果不确定,因为没有足够的精度使浮点数给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!

+0咯

比如:`server_id` varchar(2) NOT NULL default '',

手动转化类型:

select server_id from cardserver where game_id = 1 order by server_id+0 desc limit

楼主说cast,convert不行 这应该不可能 不知道楼主的用法用对了么?

使用MySQL函数CAST/CONVERT:

select server_id from cardserver where game_id = 1 order by CAST(server_id as SIGNED) desc limit 10

select server_id from cardserver where game_id = 1 order by CONVERT(server_id,SIGNED) desc limit 10

问题补充:

不是用cast(name,int)

cast的用法不是这样的

cast跟convert的用法如下 呵呵 这个可以参考资料 希望楼主查阅相关资料你就会知道拉

signed 后面还有个INTEGER 可以不写的 呵呵

用CAST函数或者CONVERT

CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]

CHAR[(N)]

DATE

DATETIME

DECIMAL

SIGNED [INTEGER]

TIME

UNSIGNED [INTEGER]

试过了是正确的

希望对您有所帮助


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6147295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存