Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как узнать номер недели в месяце / 7 сообщений из 7, страница 1 из 1
21.09.2005, 23:02
    #33282544
Olya_33
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
как узнать номер недели в месяце ?



допустим сегодня : 21-09-2005 принадлежит какой неделе в сентябре?
...
Рейтинг: 0 / 0
21.09.2005, 23:34
    #33282560
olya_33
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
nashla :


declare @d datetime
set @d=convert(char(8),getdate(),112)
select '№ недели в месяце',(day(@d)+datepart(weekday,dateadd(day,1-day(@d),@d))-datepart(weekday,@d))/7+1
...
Рейтинг: 0 / 0
22.09.2005, 07:25
    #33282673
LISSY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
Баловство, конечно, но мне нравится...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
if object_id ('tempdb..#w') is not null drop table #w
--//-----------------------------------------------------------------------------------------
declare @bdate datetime, @edate datetime, @b_date datetime, @e_date datetime, @nd int,
        @note varchar ( 64 ), @MyDog varchar ( 8000 ), @nday int, @nweek int, 
        @tday varchar ( 3 ), @tc varchar ( 3 ), @datesettings int, @langsettings varchar ( 16 )
--//-----------------------------------------------------------------------------------------
select @bdate = '20050101', @edate = '20051231', 
       @datesettings = @@datefirst, @langsettings = @@language
set datefirst  1 
set language russian
--//-----------------------------------------------------------------------------------------
create table #w 
(
  [Примечание] varchar ( 64 ) null, [Неделя] int null,
  [Пн.] varchar ( 8 ) null, [Вт.] varchar ( 8 ) null,
  [Ср.] varchar ( 8 ) null, [Чт.] varchar ( 8 ) null,
  [Пт.] varchar ( 8 ) null, [Сб.] varchar ( 8 ) null,
  [Вс.] varchar ( 8 ) null,
)
--//-----------------------------------------------------------------------------------------
select @b_date = dateadd (day,  1 , dateadd (day, - datepart (day, @bdate), @bdate))
select @e_date = dateadd (month,  1 , @edate)
select @e_date = dateadd (day, - datepart (day, @e_date), @e_date)
select @nd = datediff (day, @b_date, @e_date)
--//-----------------------------------------------------------------------------------------
while @nd >=  0 
begin
   select @nday = datepart (weekday, @b_date), @nweek = datepart (week, @b_date)
   select @note = datename (month, @b_date) + ' ' + convert (char ( 4 ), year (@b_date))
   if not exists 
   (
     select * from #w where [Примечание] = @note and [Неделя] = @nweek
   )
   insert into #w select [Примечание] = @note, @nweek as [Неделя], 
               '', '', '', '', '', '', ''
   select @tday = case when @nday =  1  then 'Пн.' when @nday =  2  then 'Вт.'
                       when @nday =  3  then 'Ср.' when @nday =  4  then 'Чт.'
                       when @nday =  5  then 'Пт.' when @nday =  6  then 'Сб.'
                       when @nday =  7  then 'Вс.' else null
                  end,
          @tc = case when @b_date between @bdate and @edate 
                     then convert (varchar ( 3 ), datepart (day, @b_date))
                     else ' '
                end
   select @MyDog = 
   'update #w set [' + @tday + '] = ' + char( 39 ) + @tc + char( 39 ) + 
   ' where [Примечание] = ' + char ( 39 ) + @note + char ( 39 ) +
   ' and [Неделя] = ' + convert (varchar ( 3 ), @nweek)
   exec (@MyDog)
   select @nd = @nd -  1 , @b_date = dateadd (day,  1 , @b_date)
end
--//-----------------------------------------------------------------------------------------
select * from #w
--//-----------------------------------------------------------------------------------------
if object_id ('tempdb..#w') is not null drop table #w
--//-----------------------------------------------------------------------------------------
set datefirst @datesettings
set language @langsettings
...
Рейтинг: 0 / 0
22.09.2005, 08:32
    #33282727
Брюлик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
CREATE FUNCTION dbo.WeekOfMonth(@now_day DATETIME)
RETURNS INT
AS
BEGIN
RETURN DATEPART(week, @now_day)
- DATEPART(week, CONVERT(CHAR(6), @now_day, 112)+'01')
+ 1
END
...
Рейтинг: 0 / 0
22.09.2005, 09:03
    #33282772
Проходимец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
Код: plaintext
select datepart(day, getdate()) /  7  +  1 
...
Рейтинг: 0 / 0
22.09.2005, 09:05
    #33282775
Проходимец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
Проходимец
Код: plaintext
select datepart(day, getdate()) /  7  +  1 

Неверно :D Погорячился :D
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.04.2018, 16:51
    #39630973
LestatKim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать номер недели в месяце
Код: sql
1.
CEILING(DATEPART(DAY, @Date) / 7.0)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как узнать номер недели в месяце / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]