Вычисление даты очередного дня недели.
::=
<Значимое выражение>
должно иметь тип DATE или приводиться к нему.
<День недели>
– символьное выражение или приводимое к нему, которое должно иметь одно из следующих значений:
Название дня недели | ||
---|---|---|
Полное | Сокращенное | Полное |
Monday | Mon | Понедельник |
Tuesday | Tue | Вторник |
Wednesday | Wed | Среда |
Thursday | Thu | Четверг |
Friday | Fri | Пятница |
Saturday | Sat | Суббота |
Sunday | Sun | Воскресенье |
Аргументы могут быть заданы <SQL-параметром>
, который должен содержать
спецификацию типа данных параметра.
select next_day(? (date), ? (char(3))); 01.01.2014 sun |05.01.2014:00:00:00.00|
Возвращается значение типа DATE, соответствующее указанному <дню недели>
после заданной даты.
Значение времени в возвращаемой дате совпадает со временем в исходной дате.
Если запрашиваемый день недели совпадает с днем недели в исходной дате, возвращается дата следующего (т.е. через 7 дней) дня недели.
select next_day( cast '04.08.2006' as date, 'fri'); |11.08.2006:00:00:00|
Определить дату первого понедельника следующего месяца:
select next_day(last_day(cast '19-08-2006' as date),'monday'); |04.09.2006:00:00:00|
Определить дату дня недели после текущей даты (требуемый день недели берётся из таблицы):
create or replace table tst(day_week char(3)); insert into tst values('mon'); insert into tst values('tue'); select case dayname(next_day(sysdate, day_week)) when 'mon' then 'понедельник' when 'tue' then 'вторник' when 'wed' then 'среда' when 'thu' then 'четверг' when 'fri' then 'пятница' when 'sat' then 'суббота' when 'sun' then 'воскресенье' else null end, next_day(sysdate, day_week) from tst where rowid=2; |вторник |08.08.2006:10:23:12|