Я перенесла базу данных моего приложения из SQL Server в MySQL. Теперь я корректирую код приложения, и у меня возникают проблемы с функциями даты. В частности, похоже, что DateDiff() SQL Server округляется, а TimestampDiff() MySQL округляется. Например:SQL Server DateDiff() vs 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? Я не могу просто добавить 1 к каждому выражению diff в MySQL, потому что в тех случаях, когда разница между 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
EDIT: комментарии предлагают только конверсии для различий в Днях. Я также должен поддерживать разницу во второй, неделя, месяц, год и т.д.
Вы можете рассчитывать вместо часов? –
Если это помогает кому-то, кто знает ответы MySQL, SQL Server не «округляет»; SQL Server просто подсчитывает количество дней * границ * между двумя раз. Так, например, разница «день» между «2015-11-25 23: 58: 00» и «2015-11-25 23: 59: 00» равна 0, так как границы не пересекаются. Однако разница «день» между «2015-11-25 23: 59: 00' и« 2015-11-26 00: 00: 00 »равна 1, поскольку граница дня пересекается. Если вы просто отключили компонент времени от дат перед сравнением, я предполагаю, что вы получите тот же ответ с MySQL. –
@matt о том же значении с дневным приложением? –