В рассматриваемых СУБД для обработки времени мало общего. Самый минимум у Oraсle:
· current_date - глобальная переменная содержащая текущую дату. Можно использовать и в других СУБД;
· trunc(d,s) - приводит дату к началу указанной временной отметки, например к началу месяца. В PostgreSQL есть аналогичная функция date_trunc(s,d). В MySQL для этих целей может использоваться функция date_format(d,s), но она возвращает результат в виде строки;
· add_months(d,n) - добавляет к дате указанное число месяцев;
· last_day(d) - последний день месяца, содержащегося в аргументе;
· months_between(d1,d2) - возвращает число месяцев между датами.
Ниже приведены допустимые форматы в строковом параметре s для функций trunc и date_trunc соответственно:
· квартал - q, quarter;
· год - yyyy, year;
· месяц - mm, month;
· неделя - ww, week;
· день - dd, day;
· час - hh, hour;
· минута - mi, minute.
Такие функции как last_day в других СУБД реализуются с помощью арифметики времени и преобразования типов. Так что при желании можно написать соответствующую функцию. Ниже приведена выборка последнего дня указанной даты.
-- для PostgreSQLselect cast( (date_trunc('month', date '2009-01-15') + interval '1 month') as date) - 1 as d -- для MySQLselect date ( date_format('2009-01-15','%Y-%m-01')) + interval 1 month - interval 1 day as d