2012-10-05 2 views
0

Я хотел бы спросить о том, как получить дату на будний деньКак получить даты в будний день?

enter image description here

green is weekday

red is sunday

так, когда я ввода SQL приказываю (например, 27), когда год 2012 он покажет дата 2012-07-2 до 2012-07-08

+0

Да. Для базы данных. Я хочу рассчитать производственный день каждую неделю –

+0

'Для базы данных'. MySQL? – RichardTheKiwi

+0

Да, я должен ввести диапазон недели в базу данных. SQl-сервер действителен. Спасибо –

ответ

2

В этом запросе используется один параметр @weekno, как в ставит и возвращает 7 дней на этой неделе, принимая понедельник в качестве первого дня недели. Определение WeekNo не следует за SQL Server DatePart(Week), потому что это зависит от @@ Datefirst. Это не так.

Линия dateadd.. - это выражение, которое возвращает первый понедельник года. Я получил его от here. Строка над ним просто добавляет недели к ней и 0-6 для создания 7 дней. Чтобы убедиться, что это верно для любого года, измените CURRENT_TIMESTAMP в запросе на дату, например 20180708. FYI, 1 января-2018 - понедельник.

declare @weekno int = 27; 
select 
    (@weekno-1)*7+v.num+ 
    dateadd(dd,(datediff(dd,0,dateadd(yy,datediff(yy,0,CURRENT_TIMESTAMP),6))/7)*7,0) 
from (values(0),(1),(2),(3),(4),(5),(6))v(num) 
order by num 

-- results 
July, 02 2012 00:00:00+0000 
July, 03 2012 00:00:00+0000 
July, 04 2012 00:00:00+0000 
July, 05 2012 00:00:00+0000 
July, 06 2012 00:00:00+0000 
July, 07 2012 00:00:00+0000 
July, 08 2012 00:00:00+0000 
+0

Да, если вы не возражаете, я могу спросить, где я должен поставить @weekno. Спасибо –

+0

Второе, что в запросе нет '@ weekno'. –

+0

@Andriy Я не должен набирать голодных и ошибаться :) – RichardTheKiwi

Смежные вопросы