1.时间相减
Oracle | Mysql |
---|---|
时间相减=天数(可能会小数) | 时间相减,并不是时间值 |
实际是mysql的时间相减是做了一个隐式转换操作,将时间转换为整数,但并不是用unix_timestamp转换,而是直接把年月日时分秒拼起来,如2013-04-21 16:59:33 直接转换为20130421165933,由于时间不是十进制,所以最后得到的结果没有意义
要得到正确的时间相减秒值,有以下3种方法:
1、time_to_sec(timediff(t2, t1)),
2、timestampdiff(second, t1, t2),
3、unix_timestamp(t2) -unix_timestamp(t1)
2.数据转换
Oracle | Mysql |
---|---|
to_char(,‘fm999999990,9999’) | convert()/cast()/format() |
format()函数返回类型是字符串,满三位会加一个逗号。
针对数字类型转换建议使用 convert或者cast函数,用法如下:
format(param, 2) (不建议)
convert(param, decimal(12,2))(建议)
cast(param as decimal(12,2))(建议)
select 0+convert(11.2,decimal(12,2)) ; -- 12.20,严格按照格式来转换
select 0+covert(11.2,char); -- 11.2
小提示:有时候不能区分查询或者转换出来的是数字还是其他的Mysql数据类型,可以看select时候看数字偏在查询数据展示的窗口哪一边.
3.字符串截取
Oracle | Mysql |
---|---|
substr()/substr () 可以有空格 | substr()/不可以有空格 |
Mysql的substr函数不能写成括号和函数名之间带空格的,但是oracle就可以.
oracle的substr函数可以从0或者1开始,这两者效果都一样,但是Mysql只能从1开始截取,从0开始就是一个空
4.insert语句
Oracle | Mysql |
---|---|
‘’/null都可以插入 | ‘’/null不是一个意思 |
在查询和插入的时候要特别的注意
5.Mysql字符串大小写
Mysql默认不区分大小写
MySql默认查询是不区分大小写的,如果需要区分他,必须在建表的时候,Binary标示敏感的属性.
CREATE TABLE NAME(
name VARCHAR(10) BINARY
);
2、 在SQL语句中实现 SELECT * FROM TABLE NAME WHERE BINARY name='Clip';
3、 设置字符集:
utf8_general_ci --不区分大小写
utf8_bin--区分大小写