mysql:两个时间相减,得出这种格式的时间 '2年240天17小时56分2秒'能用sql写出来吗 ?

mysql:两个时间相减,得出这种格式的时间 '2年240天17小时56分2秒'能用sql写出来吗 ?,第1张

declare @str int

set @str=datediff(second,'2016-01-01','2017-08-01 08:12:30') --日期时间差

select cast(@str/(86400*365) as char)+'年'

select cast(@str/86400%365 as char)+'天'

select cast(@str/3600%24 as char)+'时'

select cast(@str/60%60 as char)+'分'

select cast(@str%60 as char)+'秒'

你自己修改下 然后字符串链接就能得出结果

首先是大体一致的,只是分页查询时oracle用的伪列(rownum),mysql用的是limit,具体的可以百度一下分页;

另外oracle对sql语句要求更为严格,而且oracle里变量较mysql更多点,oracle中有number型,有大数据类型,mysql没得;

另外举个例子,oracle不能插入为空列,而mysql是可以的(个人觉得,不知道正确与否)。还有他们两者函数有不同之处,如转日期函数oracle是to_date('要转的字符串','格式') -- select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')from dual,而mysql是str_to_date('08/09/2008', '%m/%d/%Y')-- 2008-08-09//都是针对字符串转日期来的。

还有一点,我们常常希望主键可以自动增长,避免我们插入数据时的重复问题,但是oracle不能设置列自动增长,而mysql是可以的,oracle可以用序列加触发器来解决自动增长问题达到与mysql一样的效果。

总体来说百分之九十的sql语句是没区别的。总体来说oracle的格式严格点,对有些字符型的还必须加单引号才能插入,mysql要求就没这么多了。还有当向数据库插入一个日期时,mysql可以直接插入成功,但是oracle需要先转化为sql里面的日期类型才行;oracle较mysql而言更安全,但是收费的,一般大公司用的多。oracle还有存储过程和函数,触发器这些这是mysql没有的。大体就是这样吧。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存