Mysql 如何转换string为数字

问题来源

当我们用字符串来存储数字,而又需要用到数字来比对大小时,需要转换成数字来比对

实际工作问题:

遇到过一个字段,开始时间或结束时间保存方式是这样:140000/1730000
但是在程序中,当我把它转成时分秒,并用构造函数生成时间时报错。自然猜到是某些记录的格式不对,
那么,怎么找出这些记录呢。该程序在开发测试环境都没有报错。
想到的方法是,分别把他们的时分秒取出来,再看是否符合标准格式。

函数

涉及到的函数有

  1. 字符串截取 substring(name from 1 for 2)/substring(name,1,2) 截取name从第1个开始的2个字符 起始是1
    需要截取时分秒出来
    substring(start_time,1,2) 小时
    substring(start_time,3,2) 分钟
    substring(start_time,5,2) 秒数

2.转换函数 CAST(value as type)/CONVERT(value, type)
可以转换的type如下:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

用法

select * from tablename where CONVERT(substring(start_time,1,2), SIGNED) > 23
select * from tablename where CONVERT(substring(start_time,3,2), SIGNED) > 59
select * from tablename where CONVERT(substring(start_time,5,2), SIGNED) > 59

上一篇:SQLServer时间转换


下一篇:VMware Convert 使用