Как изменить формат даты ?

Sasha
Дата: 17.11.2000 07:15:31
Можно ли в MSS изменить формат даты, что бы он работал не с mm.dd.yyyy , а с dd.mm.yyyy
petr13
Дата: 17.11.2000 10:26:52
В случае использовании констант (напремер в Where или Install) пользуйся
Set dataformat dmy -- день, месяц, год
При выборках - используй функцию CONVERT
Oleg F
Дата: 20.11.2000 16:05:23
Что если пошлёшь запрос вида
SELECT ....
FROM ...
WHERE CONVERT(поле_даты),...) = ...

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

Так что использование SET DATEFORMAT предпочтительней.
Dmitry
Дата: 21.11.2000 10:22:47
Это относится ко всем индексам? (независимо от того кластерный он или некластерный?) И не зависит ли от вида функции. Если есть ссылочка на эту тему, буду весьма признателен.

Кстати, можно ведь использовать и наоборот where <поле даты>=Convert(datetime,<константа/выражение>,<формат даты>. Тогда никакая функция от поля с индексом браться и не будет
Oleg F
Дата: 21.11.2000 10:50:18
"Кстати, можно ведь использовать и наоборот where <поле даты>=Convert(datetime,<константа/выражение>,<формат даты>"

Да, действительно, в этом случае SQL Server может использовать индекс.
Я не могу сказать, есть ли в документации информация про взаимоотношения индексов и функций.
Я сам пришёл к этому выводу, анализируя планы выполнения различных запросов к полям разных типов. Т.е. эмпирическим путём. Не думаю, что разница "кластерный" или "некластерный" как-то повлияет на работу оптимизатора запросов. Т.к. кластерный индекс лишь определяет способ физического расположения строк в таблице (т.е. в отсортированном порядке), но не способ поиска.
В документации я нашёл только явное утверждение про LIKE, что если LIKE 'значение%', то индекс будет использоваться, а если LIKE '%значение', то не будет.