SQL Server DateDiff()vs MySQL TimestampDiff()

时间:2015-11-24 19:50:47

标签: mysql sql-server

我已将应用程序的数据库从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等的差异。

1 个答案:

答案 0 :(得分:1)

如果我这样做,我会编写一个存储函数SQL_SERVER_DATEDIFF()作为MySQL TIMESTAMPDIFF()的包装器,并进行调整以使其行为类似于SQL Server DATEDIFF()并通过搜索/替换进行搜索/替换代码。这使您可以灵活地解决此问题以及将来可能出现的任何其他问题。