Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment spécifier un littéral de date lors de l'écriture d'une requête SQL à partir de SQL Server liée à Oracle ?

Je préfère le 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

Le simple littéral de date n'est pas indépendant de la culture...

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

Mais cela fonctionne - cependant - avec le type de cible DATE (cette différence est plutôt bizarre...) :

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

Merci à lad2025, je veux ajouter pour être complet l'ISO 8601 "complet", qui fonctionne bien :

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