Читайте также:
|
|
Ранее в этой главе была представлена функция, используемая для до_ бавления заданного интервала к значению даты и формирующая, та_ ким образом, другую дату. Другая распространенная операция при ра_ боте с датами – определение количества интервалов (дней, недель, лет) между двумя датами. MySQL включает предназначенную для этогофункцию datediff(), которая возвращает количество полных дней ме_ жду двумя датами. Например, чтобы узнать, сколько дней будут про_ должаться школьные каникулы этим летом, можно сделать так:
mysql> SELECT DATEDIFF('2005_09_05', '2005_06_22');
+______________________________________+ | DATEDIFF('2005_09_05', '2005_06_22') | +______________________________________+
| | 75 | |
+______________________________________+ 1 row in set (0.00 sec)
Итак, до благополучного возвращения детей в школу мне предстоит 75_дневная пытка ядовитым плющом, комариными укусами и разби_ тыми коленками. Функция datediff() в своих аргументах не учитыва_ ет время дня. Даже если включить время, задавая для первой даты од_ ну секунду до полуночи и для второй даты одну секунду после полуно_ чи, эти данные никак не отразятся на вычислениях:
mysql> SELECT DATEDIFF('2005_09_05 23:59:59', '2005_06_22 00:00:01');
+________________________________________________________+ | DATEDIFF('2005_09_05 23:59:59', '2005_06_22 00:00:01') | +________________________________________________________+
| | 75 | |
+________________________________________________________+ 1 row in set (0.00 sec)
Если переставить аргументы, поместив первой более раннюю дату, datediff() вернет отрицательное число:
mysql> SELECT DATEDIFF('2005_06_22', '2005_09_05');
Функции преобразования | |
+______________________________________+ | DATEDIFF('2005_06_22', '2005_09_05') | +______________________________________+
| | _75 | |
+______________________________________+
В SQL Server тоже есть функция datediff(), но более гибкая, чем в MySQL. В ней можно задавать тип интервала (т. е. год, месяц, день, час), а не только вычислять количество дней между двумя датами. Вот как был бы выполнен предыдущий пример для SQL Server:
SELECT DATEDIFF(DAY, '2005_06_22', '2005_09_05')
Oracle Database позволяет определять число дней между двумя датами простым вычитанием одной даты из другой.
Дата добавления: 2015-08-17; просмотров: 49 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Временные функции, возвращающие строки | | | Функции преобразования |