sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo especifico la fecha literal al escribir una consulta SQL desde SQL Server que está vinculada a Oracle?

Prefiero el formato 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

El literal de fecha simple no es independiente de la cultura...

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

Pero funciona, sin embargo, con el tipo de objetivo DATE (esta diferencia es bastante rara...):

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

Gracias a lad2025 Quiero agregar para completar el ISO 8601 "completo", que funciona 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