powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как вытащить номер недели в текущем месяце?
8 сообщений из 8, страница 1 из 1
Как вытащить номер недели в текущем месяце?
    #36767582
rep_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASE 12.5
Добрый день!
Есть функция
Код: plaintext
select datepart (week , "30 jul 2010") 
результат 31 (номер недели в году), а как мне сделать чтобы он показывал 5 (то есть номер недели в текущ месяце.)
Спасибо!
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36767779
MAXHATbIu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Путем несложных вычислений:
select 1+datepart(day, getdate())/7
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36767793
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select datepart (week , "2010-07-30")  - datepart (week , "2010-07-01") +  1 
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36768296
rep_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не подошли варианты
Используется только один параметр это дата

select 1+datepart(day, "12 jul 2010")/7

выдает 2, хотя это третья неделя.
в другом запросе надо ещё высчитывать 1 число месяца
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36768901
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rep_userв другом запросе надо ещё высчитывать 1 число месяца
Это для вас проблема со стороны объема данных или со стороны алгоритма?

Код: plaintext
1.
Declare @D DateTime set @D = getdate()
Select DateAdd(day, -datepart(day,@D) +  1 , @D)
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36770626
MAXHATbIu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так:
select ceiling(datepart(day, getdate())/7.0)
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36771145
rep_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне надо использовать типа такой инструкции
select datepart (week , "30 jul 2010")
указал дату и вышел результат
...
Рейтинг: 0 / 0
Как вытащить номер недели в текущем месяце?
    #36772819
MAXHATbIu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, Вас интересует параметр функции datepart.

caldayofweek cdw 1 - 7 (Monday-Sunday) --календарный день недели
причем с понедельника по воскресенье

Итого, если datepart(cdw, 'Нужная_дата') < datepart(cdw, 'Начало_месяца'), то к ceiling(datepart(dd, 'Нужная_дата')/7.0) прибавляем 1, иначе не прибавляем.

Получаем примерно следующее(результаты):
Код: plaintext
1.
select ceiling(datepart(dd, '20100701')/ 7 . 0 ) +  case when  datepart(cdw, '20100701') < datepart(cdw, '20100701') then  1  else  0  end  --1 неделя

Код: plaintext
1.
select ceiling(datepart(dd, '20100708')/ 7 . 0 ) +  case when  datepart(cdw, '20100708') < datepart(cdw, '20100701') then  1  else  0  end  --2 неделя

Код: plaintext
1.
 select ceiling(datepart(dd, '20100718')/ 7 . 0 ) +  case when  datepart(cdw, '20100718') < datepart(cdw, '20100701') then  1  else  0  end --  3  неделя

Код: plaintext
1.
 select ceiling(datepart(dd, '20100719')/ 7 . 0 ) +  case when  datepart(cdw, '20100719') < datepart(cdw, '20100701') then  1  else  0  end  -- 4  неделя

Код: plaintext
select ceiling(datepart(dd, '20100720')/ 7 . 0 ) +  case when  datepart(cdw, '20100720') < datepart(cdw, '20100701') then  1  else  0  end -- 4  неделя

с виндовсовским календарем вроде совпадает. Как вытащить начало месяца тут уже писали.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как вытащить номер недели в текущем месяце?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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