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

Jak określić literał daty podczas pisania zapytania SQL z serwera SQL połączonego z Oracle?

Wolę format ODBC:

--DateTime
SELECT {ts'2015-09-20 12:30:00'}
--Time (however this comes with "today"-time)
SELECT {t'12:30:00'}
--Date
SELECT {d'2015-09-20'}
GO

Prosty literał daty nie jest niezależny od kultury...

SET LANGUAGE ENGLISH;
SELECT CAST('2014-09-13' AS DATETIME);
GO
SET LANGUAGE GERMAN;
SELECT CAST('2014-09-13' AS DATETIME);--ERROR: there's no month "13"
GO

Ale działa - jednak - z typem docelowym DATE (ta różnica jest dość dziwna...):

SET LANGUAGE ENGLISH;
SELECT CAST('2014-09-13' AS DATE);
GO
SET LANGUAGE GERMAN;
SELECT CAST('2014-09-13' AS DATE);--ERROR: there's no month "13"
GO

Dzięki dla lad2025 dla kompletności chcę dodać "pełne" ISO 8601, które działa dobrze:

SET LANGUAGE ENGLISH;
SELECT CAST('2014-09-13T12:30:00' AS DATETIME);
GO
SET LANGUAGE GERMAN;
SELECT CAST('2014-09-13T12:30:00' AS DATETIME);
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyłączyć wszystkie ograniczenia klucza obcego w bazie danych SQL Server — samouczek SQL Server/TSQL — część 77?

  2. Indeksy oparte na funkcjach w SQL Server

  3. Utwórz tabelę w SQL Server (T-SQL)

  4. Nowe wydanie:pakiet dostrajania Spotlight 7.1.9

  5. Wywołanie procedury składowanej T-SQL przez ADO.NET powoduje wyjątek SqlTimeoutException