Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как изменить формат даты ?  [new]
Sasha
Guest
Можно ли в MSS изменить формат даты, что бы он работал не с mm.dd.yyyy , а с dd.mm.yyyy
17 ноя 00, 07:15    [2046]     Ответить | Цитировать Сообщить модератору
 RE:Как изменить формат даты ?  [new]
petr13
Guest
В случае использовании констант (напремер в Where или Install) пользуйся
Set dataformat dmy -- день, месяц, год
При выборках - используй функцию CONVERT
17 ноя 00, 10:26    [2047]     Ответить | Цитировать Сообщить модератору
 Только учти...  [new]
Oleg F
Guest
Что если пошлёшь запрос вида
SELECT ....
FROM ...
WHERE CONVERT(поле_даты),...) = ...

То индекс по этому полю (если он есть) использоваться не будет. Впрочем, это касается любого поля (не только даты). Если при поиске идёт обращение не к полю напрямую, а через функцию, то поиск ведётся путём сканирования всей таблицы данных.

Так что использование SET DATEFORMAT предпочтительней.
20 ноя 00, 16:05    [2048]     Ответить | Цитировать Сообщить модератору
 RE:Как изменить формат даты ?  [new]
Dmitry
Guest
Это относится ко всем индексам? (независимо от того кластерный он или некластерный?) И не зависит ли от вида функции. Если есть ссылочка на эту тему, буду весьма признателен.

Кстати, можно ведь использовать и наоборот where <поле даты>=Convert(datetime,<константа/выражение>,<формат даты>. Тогда никакая функция от поля с индексом браться и не будет
21 ноя 00, 10:22    [2049]     Ответить | Цитировать Сообщить модератору
 RE:Как изменить формат даты ?  [new]
Oleg F
Guest
"Кстати, можно ведь использовать и наоборот where <поле даты>=Convert(datetime,<константа/выражение>,<формат даты>"

Да, действительно, в этом случае SQL Server может использовать индекс.
Я не могу сказать, есть ли в документации информация про взаимоотношения индексов и функций.
Я сам пришёл к этому выводу, анализируя планы выполнения различных запросов к полям разных типов. Т.е. эмпирическим путём. Не думаю, что разница "кластерный" или "некластерный" как-то повлияет на работу оптимизатора запросов. Т.к. кластерный индекс лишь определяет способ физического расположения строк в таблице (т.е. в отсортированном порядке), но не способ поиска.
В документации я нашёл только явное утверждение про LIKE, что если LIKE 'значение%', то индекс будет использоваться, а если LIKE '%значение', то не будет.
21 ноя 00, 10:50    [2050]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить