Я знаю, что существует множество способов расчета разницы между датами в разных базах данных. Моя проблема в том, что мне нужен способ сделать это, что будет работать как в SQL Server, так и в DB2, используя тот же SQL-запрос.Расчет разницы между двумя датами в SQL Server и DB2
На ежегодной основе можно использовать
CURRENT_TIMESTAMP - [BIRTHDATE] AS AGETHISYEAR
Но я также хочу знать возраст лиц в десятичной форме, т.е. 34,4 в зависимости от рождения людей и текущей даты.
В SQL Server тип columntype для [BIRTHDATE]
равен DATETIME
, а в DB2 тип столбца - DATE
.
Формат YYYY-MM-DD
Есть ли способ сделать это?
С уважением, Альфред
SELECT DATEDIFF (YY, BIRTHDATE, CURRENT_TIMESTAMP) вернет целое число лет, я не понимаю десятичную часть, вы хотите долю года до его следующей даты рождения? –
Сделайте датичный день и разделите его на 365.25. Однако, поскольку sql-сервер и db2 имеют разные функции, которые дают вам разницу между двумя датами, вы не сможете использовать либо, если хотите иметь точно такой же sql. –
Я думаю, что у вас есть свои типы данных назад - DB2 не имеет 'DATETIME', а более ранние версии SQL Server не имеют' DATE'. Кажется, вы не можете вычитать даты таким образом в SQL Server, и в результате этого в DB2 получается число, содержащее 10 цифр (вам нужно разделить). @DanBracuk - DB2 не имеет 'DATEDIFF', а' TIMESTAMPDIFF' it _does_ возвращает ** оценку **. –