Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como especifico o literal de data ao escrever uma consulta SQL do SQL Server que está vinculada ao Oracle?


Eu prefiro o 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

O literal de data simples não é independente de 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

Mas funciona - no entanto - com o tipo de destino DATE (esta diferença é bastante estranha...):
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

Thx to lad2025 Eu quero adicionar para completar o ISO 8601 "completo", que funciona bem:
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