Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Data SQL Server Format zależny od użytkownika?

Jeśli chcesz określić daty i godziny za pomocą ciągów, użyj bezpiecznego , format niezależny od języka.

W SQL Server jest to format ISO-8601 (nieco dostosowany) i obsługuje zasadniczo dwa bezpieczne formaty dla DATETIME które zawsze działają - niezależnie od ustawień języka, regionu i formatu daty:

YYYYMMDD              (e.g. 20121231  for 31st of December 2012)  if you need date only

YYYY-MM-DDTHH:mm:ss   (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)

Uwaga:

  • pierwszy format zawierający tylko datę bez myślników lub ograniczniki!

  • drugi format ma myślniki na datę (można je również pominąć) i jest stały T jako separator między datą a godziną w łańcuchu

Aktualizacja: zgodnie z twoim ostatnim komentarzem (w różnych domyślnych językach dla dwóch użytkowników) - spróbuj tego:

-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)   

Działa dobrze...

-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)

To próbuje zinterpretować ciąg jako 11. 30. miesiąca 2012 i oczywiście to się nie udaje...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest zakres CONTEXT_INFO w SQL Server?

  2. Utwórz tabelę tymczasową na podstawie innej tabeli w SQL Server

  3. Jak przedefiniować kolumny zwracane przez procedurę składowaną w SQL Server

  4. Integracja SQL Service Broker i NServiceBus

  5. Optymalizacja zapytań SQL