我已经将应用程序的数据库从SQL Server迁移到了MySQL。现在,我正在调整应用程序代码,并且遇到了日期函数问题。具体来说,似乎SQL Server的DateDiff()向上取整,而MySQL的TimestampDiff()向下取整。例如:
SQL Server: select datediff(day,'2015-11-25 12:00:00', '2015-11-26') returns 1
MySQL: select timestampdiff(day,'2015-11-25 12:00:00', '2015-11-26') returns 0
使MySQL返回与SQL Server相同结果的最佳方法是什么?我不能在MySQL的每个diff表达式中加1,因为在date1和date2之间的差异恰好相隔X天的情况下,MySQL的评估与SQL Server的评估完全相同。例如:
SQL Server: select datediff(day,'2015-11-25', '2015-11-26') returns 1
MySQL: select timestampdiff(day,'2015-11-25', '2015-11-26') returns 1
编辑:评论仅建议转换为DAY的差异。我还需要支持SECOND,WEEK,MONTH,YEAR等方面的差异。
如果这样做的话,我会写一些存储函数SQL_SERVER_DATEDIFF()
作为MySQL的包装,TIMESTAMPDIFF()
并进行一些调整,使其表现得像SQL Server DATEDIFF()
,并通过代码进行搜索/替换。这使您可以灵活地解决此问题以及将来可能出现的任何其他问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句