Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Как узнать формат даты который по умолчанию


Автор: Gwire 21.2.2012, 17:28
У заказчика имеется уже рабочая база. 
Он дал копию базы для примера и заказал несколько дополнительных программ.
Из backup-а развернул базу. Написал программу. Отдал заказчику. 
На его сервере не работает фильтр по дате. Начал разбираться... 
Оказывается у него формат даты MM-DD-YYYY а на моем YYYY-MM-DD.

Менять форматы не вариант, нет гарантии, что программы написанные ранее (не мной) не перестанут работать.
На моем сервере тоже не нужно. Не потому, что нельзя, просто хочется добиться работоспособности клиента с любой настройкой сервера.

Запрос отправляю вида
Код

SELECT * FROM [dbo].[table] WHERE [date] > '2012-01-20';
И в результате запрос не возвращает данные или матерится:
"The conversion of a varchar data type to a datetime data type resulted in an out-of-range value."

Со стороны клиента эта проблему решается просто. Но нужно получить порядок следования аргументов даты.
Подскажите, пожалуйста, каким запросом можно получить формат даты установленный на сервере.

P.S. Если кому интересно, программа написана под Delphi7. Компонент TADODataSet.
Искал в похожих темах ответа не видел. =(

Автор: Zloxa 21.2.2012, 19:28
Цитата(Gwire @  21.2.2012,  17:28 Найти цитируемый пост)
Не потому, что нельзя, просто хочется добиться работоспособности клиента с любой настройкой сервера.

Не используйте литералов в запросах, используйте связанные переменные.

Региональные же настройки вообще, обычно - не столько настройки сервера, сколько  настройки клиента. И если могут быть прописаны на стороне сервера по умолчанию, то могут быть изменены на стороне клиента.
http://msdn.microsoft.com/ru-ru/library/ms189491.aspx. От туда же линк на http://msdn.microsoft.com/ru-ru/library/ms180878.aspxкак вообще работать с датами.

Цитата

То, как будет воспринято значение, зависит от сочетания формата строкового литерала, типа данных и следующих настроек времени выполнения: SET DATEFORMAT, SET LANGUAGE и параметр default language.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)