Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Datepart vs cast  [new]
Genniy
Member

Откуда:
Сообщений: 141
привет всем!

ребята, кто знает, что лучше использовать Datepart или cast?
Ситуация следующая — нужно сгруппировать по месяцам.

Например:
select count(sales) from table
group by cast(convert(nvarchar(7), table.[DateTime], 102) as datetime)
order by cast(convert(nvarchar(7), table.[DateTime], 102) as datetime)

или использовать аналогичный запрос используя datepart.

Вопрос в том, что если внутри сама функция datepart использует cast, то смысла нет.

Заранее спасибо за ответ!
22 сен 11, 09:54    [11316807]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
Glory
Member

Откуда:
Сообщений: 104751
У вас между прочим тоже двойное преобразование
22 сен 11, 09:58    [11316828]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
Datepart
Guest
Genniy
привет всем!

ребята, кто знает, что лучше использовать Datepart или cast?
Ситуация следующая — нужно сгруппировать по месяцам.

Например:
select count(sales) from table
group by cast(convert(nvarchar(7), table.[DateTime], 102) as datetime)
order by cast(convert(nvarchar(7), table.[DateTime], 102) as datetime)

или использовать аналогичный запрос используя datepart.

Вопрос в том, что если внутри сама функция datepart использует cast, то смысла нет.

Заранее спасибо за ответ!

при использовании Datepart вы можете получить выигрыш, т.к. она детерминирована.
22 сен 11, 10:03    [11316854]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
iljy
Member

Откуда:
Сообщений: 8711
Genniy,

проще и быстрее всего использовать группировку по DATEDIFF(mm, 0, table.[DateTime])
22 сен 11, 10:06    [11316871]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
счастливый владелец хрустального
Guest
iljy
Genniy,

проще и быстрее всего использовать группировку по DATEDIFF(mm, 0, table.[DateTime])


обычно требуется не только группировать по месяцам, но и выводит год-месяц в связки с суммой, я думаю select count(sales) from table слишком упрощенный вариант.
22 сен 11, 10:09    [11316897]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
Genniy
Member

Откуда:
Сообщений: 141
Спасибо большое всем!

iljy, ваш вариант в моем случае более подходящий.
22 сен 11, 10:16    [11316928]     Ответить | Цитировать Сообщить модератору
 Re: Datepart vs cast  [new]
iljy
Member

Откуда:
Сообщений: 8711
счастливый владелец хрустального
iljy
Genniy,

проще и быстрее всего использовать группировку по DATEDIFF(mm, 0, table.[DateTime])


обычно требуется не только группировать по месяцам, но и выводит год-месяц в связки с суммой, я думаю select count(sales) from table слишком упрощенный вариант.

ээээ.... и?? Вы не в состоянии в списке select написать DATEADD?
22 сен 11, 10:46    [11317151]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить