Изменение формата даты на БД SQL Server, а не на всем сервере, на дд / мм / гггг - PullRequest
5 голосов
/ 16 апреля 2009

может кто-нибудь помочь, у нас установлена ​​база данных SQL Server 2005 (на самом деле это сервер SQL 2000, подключенный к серверу SQL Server 2005) с языком сервера по умолчанию США с форматом даты, таким как mm / dd / yy, и нам действительно нужно продолжайте в том же духе, но в настоящее время только что загрузили новую базу данных на сервер, и для этого необходимо указать формат даты для дд / мм / гггг.

Могу ли я принудительно изменить только базу данных, а не весь сервер? Если я принудительно внесу изменения на весь сервер, все мои другие приложения потерпят неудачу

Например, в настоящее время у нас есть этот SQL-оператор, который не выполняется ..

ВЫБРАТЬ * ОТ СЕЗОНОВ, ГДЕ ultimo_acceso <'16 / 04/2009 13: 36: 17 '</p>

но, конечно, мы можем добавить это, что теперь работает

ВЫБРАТЬ * ОТ СЕЗОНОВ, ГДЕ ultimo_acceso <Преобразовать (datetime, '16 / 04/2009 13:36:17 ', 103) </p>

но проблема в том, что в приложении имеется большое количество SQL-операторов. Дело в том, что приложение довольно старое, и мы не хотим вносить какие-либо изменения в исходный код.

ТАК, следовательно, если бы мы могли принудительно внести изменения только в Базу данных / таблицы конкретной базы данных, то этого было бы достаточно

Любая помощь действительно ценится

Ответы [ 4 ]

7 голосов
/ 16 апреля 2009

Вы можете изменить формат даты по умолчанию для пользователя , выбрав язык по умолчанию для этого пользователя в SQL Management Studio> Безопасность> Логины> {свойства пользователя}> Язык по умолчанию.

И вы можете увидеть формат даты для каждого языка с

EXEC sp_helplanguage
3 голосов
/ 16 апреля 2009
SET dateformat dmy;
SELECT * FROM sesiones WHERE ultimo_acceso < '16/04/2009 13:36:17';
2 голосов
/ 16 апреля 2009

При работе со строками даты и времени в SQL Server я всегда использовал бы формат даты ISO-8601

YYYY-MM-DDTHH:MM:SS 

, который должен работать независимо от того, какой у вас язык или региональные настройки.

Попробуйте выбрать как:

SELECT * FROM sesiones WHERE ultimo_acceso < '2009-04-16T13:36:17'

Марк

2 голосов
/ 16 апреля 2009

Я думаю, вы в замешательстве. Datetime на сервере sql вообще не хранится в виде строк. Они хранятся в виде 8-байтовых двоичных значений и преобразуются в строки только тогда, когда вы показываете их пользователю. Вы используете столбец Datetime для хранения ваших дат, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...