2009-04-16 9 views
5

może pomóc, mamy zainstalowaną bazę danych SQL Server 2005 (w rzeczywistości jest to serwer sql 2000 dołączony do serwera sql serwer 2005) z domyślny język języka serwera USA z datownikiem takim jak mm/dd/yy i naprawdę musimy zachować to w ten sposób, ale obecnie właśnie przesłaliśmy nową bazę danych do serwera i musi to być dataformat dla dd/mm/rrrr.Zmiana datformat na SQL Server DB, a nie na całym serwerze na dd/mm/rrrr.

Czy mogę wymusić zmianę tylko w bazie danych, a nie na całym serwerze? Jeśli wymusić zmianę na serwerze sprawi, że wszystkie moje inne aplikacje nie

Na przykład obecnie mamy tę instrukcję SQL, która zawiedzie ..

SELECT * FROM Sesiones GDZIE ultimo_acceso < '16/04/2009 13:36:17'

ale oczywiście możemy dodać ten, który teraz pracuje

SELECT * FROM Sesiones GDZIE ultimo_acceso < Convert (datetime, '16/04/2009 13:36:17' , 103)

ale problem polega na tym, że w aplikacji występuje duża liczba instrukcji SQL. Prawda jest taka, że ​​aplikacja jest dość stara i naprawdę nie chcemy wprowadzać żadnych zmian w kodzie źródłowym.

W związku z tym, jeśli moglibyśmy wymusić zmianę tylko w bazie danych/tabelach określonej bazy danych, to wystarczy

Każda pomoc bardzo cenione

+3

+1. Daty są zawsze bólem. Osobiście uważam, że świat powinien po prostu używać YYYYMMDD. –

+0

@Ian poza tym, że 19700102 jest niejednoznaczny ;-P –

Odpowiedz

7

można zmienić domyślny format daty za użytkownik wybierając domyślny język dla tego użytkownika w SQL Management Studio> Zabezpieczenia> loginów> {użytkownik właściwości}> Def ault język.

i widać format daty dla każdego języka z

EXEC sp_helplanguage 
+0

Doskonały, tak .. zmienił domyślnie użytkowników język –

+0

+1 niesamowite wskazówki dla neofita sql ;-) –

+0

+1 Dzięki! Zastanawiam się, dlaczego miesiąc i dzień zostały zmienione w wynikach moich zapytań.Po co uświadamiać sobie coś technicznego, jak lokalizacja zapytań? Nieważne ... Dziękuję! – Knickedi

3
SET dateformat dmy; 
SELECT * FROM sesiones WHERE ultimo_acceso < '16/04/2009 13:36:17'; 
+0

teraz naprawdę zastanawiam się, czy to może być znak zapytania :) jeśli to zostanie zaakceptowane, będziesz miał mój głos ... –

2

myślę, że jesteś zdezorientowany. Datetime w serwerze sql nie są w ogóle zapisywane jako ciągi. Są przechowywane jako 8-bajtowe wartości binarne i są konwertowane na ciągi tylko wtedy, gdy użytkownik je wyświetla. Używasz kolumny Datetime do przechowywania swoich dat, prawda?

2

Gdy mamy do czynienia z ciągów datetime w SQL Server, bym zawsze używać ISO-8601 format daty

YYYY-MM-DDTHH:MM:SS 

który powinien działać bez względu na język lub ustawienia regionalne masz.

Spróbuj wybierz jak:

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

Marc