Я разрабатываю систему с несколькими базами данных.
Мне нужна разница между двумя датами в секундах.
В SQL Server у меня получилось: DATEDIFF(second,stardate,enddate)
В MySql: TIME_TO_SEC(TIMEDIFF(stardate,enddate))
Мой вопрос:
Есть ли в Sql Ansi функции для управления значениями DateTime?
то есть: есть функции datetime, общие для всех баз данных?


Согласно SQL: 1999, date1-date0 должна давать вам значение типа INTERVAL, структуру, из которой вы должны иметь возможность извлекать YEAR, MONTH, DAY и т. д.
Я никогда не использовал его и не думаю, что он широко поддерживается (хотя, возможно, я не в курсе). Если вы выполняете арифметику времени на уровне базы данных и хотите быть совместимыми с кросс-СУБД, обычное решение - просто использовать целочисленные метки времени (любого разрешения, но время Unix является обычным) и простую старую целочисленную арифметику, которая полностью надежна. -Платформа.
Более или менее, отсюда и положительный отзыв. Значения ИНТЕРВАЛ (например, в IBM Informix Dynamic Server) могут принадлежать к одному из двух классов - от ГОДА ДО МЕСЯЦА или ОТ ДНЯ ДО ВТОРОЙ. Действительно, у вас может быть ИНТЕРВАЛ ГОД ДО ГОДА, или МЕСЯЦ ДО МЕСЯЦА, или ДЕНЬ ДО МИНУТЫ, или ЧАС ДО СЕКУНДЫ и т. д., Включая только СЕКУНДУ.