Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Получить в запросе номер дня недели (число прочтений - 4962 )
Андрюха
Junior Member
**
Отсутствует



Сообщений: 74
Местоположение: Красноярск
Зарегистрирован: 19. Марта 2008
Пол: Мужской
Получить в запросе номер дня недели
03. Июня 2008 :: 04:27
Печать  
Пытаюсь получить в запросе номер дня недели через функцию WEEKDAY - почему-то не выходит, пишет что 'WEEKDAY' is not a recognized function name.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #1 - 03. Июня 2008 :: 04:35
Печать  
Покажи весь текст запроса.
Также можно попробовать ( для ms sql )
datepart('dw', param ) - только разберись с какого дня начинается неделя
или с понедельника или с воскресенья.
  
Наверх
 
IP записан
 
Андрюха
Junior Member
**
Отсутствует



Сообщений: 74
Местоположение: Красноярск
Зарегистрирован: 19. Марта 2008
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #2 - 03. Июня 2008 :: 04:48
Печать  
Спасибо, datepart помогло!

ТекстЗапроса = "
           |SELECT CAST(LEFT(Журнал.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
           |      , DATEPART(dw, CAST(LEFT(Журнал.Date_Time_IDDoc, 8) as DateTime)) as ДеньНедели
           ...
  
Наверх
 
IP записан
 
FAM
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 19. Мая 2006
Re: Получить в запросе номер дня недели
Ответ #3 - 03. Июня 2008 :: 08:29
Печать  
так тоже работать будет:
DATEPART(dw, LEFT(Журнал.Date_Time_IDDoc, 8)) as ДеньНедели

З.Ы. не забудь сказать Set DateFirst 1 (чтобы неделя с понедельника начиналась)
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Получить в запросе номер дня недели
Ответ #4 - 03. Июня 2008 :: 08:54
Печать  
FAM писал(а) 03. Июня 2008 :: 08:29:
З.Ы. не забудь сказать Set DateFirst 1 (чтобы неделя с понедельника начиналась)


Не страшно скулевые настройки сбивать? Мало ли, что еще там крутится и как этот параметр использует?

CREATE FUNCTION [ДеньНеделиСтрокой] (@Дата DateTime, @фКратко bit) Returns VarChar(15)
Begin
Declare @НомерДняНедели Int, @стрДеньНедели VarChar(15)

Set @Дата = DateAdd(d, @@DATEFIRST - 1, @Дата)

Set @НомерДняНедели = DATEPART(dw, @Дата)

If @НомерДняНедели = 1
     If @фКратко = 1
           Set @стрДеньНедели = 'пн'
     Else
           Set @стрДеньНедели = 'понедельник'
Else If @НомерДняНедели = 2
     If @фКратко = 1
           Set @стрДеньНедели = 'вт'
     Else
           Set @стрДеньНедели = 'вторник'
Else If @НомерДняНедели = 3
     If @фКратко = 1
           Set @стрДеньНедели = 'ср'
     Else
           Set @стрДеньНедели = 'среда'
Else If @НомерДняНедели = 4
     If @фКратко = 1
           Set @стрДеньНедели = 'чт'
     Else
           Set @стрДеньНедели = 'четверг'
Else If @НомерДняНедели = 5
     If @фКратко = 1
           Set @стрДеньНедели = 'пт'
     Else
           Set @стрДеньНедели = 'пятница'
Else If @НомерДняНедели = 6
     If @фКратко = 1
           Set @стрДеньНедели = 'сб'
     Else
           Set @стрДеньНедели = 'суббота'
Else If @НомерДняНедели = 7
     If @фКратко = 1
           Set @стрДеньНедели = 'вс'
     Else
           Set @стрДеньНедели = 'воскресенье'

     return @стрДеньНедели
End
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #5 - 03. Июня 2008 :: 09:08
Печать  
Я делал свою таблицу (по большому счету из-за того что нужно было показывать все дни независимо от данных), заодно и свои названия дней там прописаны
Соединялсо с ней:

|left join dw (nolock) on datepart(dw, vt.ds) = dw.d

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #6 - 04. Июня 2008 :: 08:57
Печать  
SET изменяет только текущий сеанс. Если все таки очень страшно - тогда пишите:
Код
Выбрать все
DECLARE @DEF INT
SELECT @DEF = @@DATEFIRST
Set DateFirst 1
--ваши инструкции

Set DateFirst @DEF 

  
Наверх
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Получить в запросе номер дня недели
Ответ #7 - 04. Июня 2008 :: 10:23
Печать  
pvase, глянь мой код выше. Set в данном случае не нужен.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #8 - 04. Июня 2008 :: 10:35
Печать  
Расслабтесь. 1С настраивает DateFirst при старте так как надо.
Эту установку можно не теребить и знать что всегда неделя с понедельника начинается
  

1&&2&&3
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #9 - 04. Июня 2008 :: 11:28
Печать  
trad писал(а) 04. Июня 2008 :: 10:35:
Расслабтесь.

Странно... у меня почему-то локально и в терминале по-разному отчет работал
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #10 - 04. Июня 2008 :: 12:10
Печать  
Цитата:
trad писал(а) 04. Июня 2008 :: 10:35:
Расслабтесь.

Странно... у меня почему-то локально и в терминале по-разному отчет работал

1. Предлагаю натравить профайлер и посмотреть батчи которые посылаются на сервер при старте 1С в обеих случаях.
2. Может быть ты уже после старта 1С эту установку потрогал.
  

1&&2&&3
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Получить в запросе номер дня недели
Ответ #11 - 04. Июня 2008 :: 12:52
Печать  
Возможно, не смотрел
Вот когда потрогал - стало нормуль
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать