Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да посоча литерал за дата, когато пиша SQL заявка от SQL Server, който е свързан с Oracle?

Предпочитам 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

Простият литерал за дата не е независим от културата...

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

Но работи - обаче - с тип цел DATE (тази разлика е доста странна...):

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

Благодаря на lad2025 Искам да добавя за пълнота "пълния" ISO 8601, който работи добре:

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. Функции, дефинирани от потребителя на SQL Server

  2. Какво е логически оператор ИЛИ в SQL Server - SQL Server / TSQL урок, част 119

  3. Вътрешно свързване на три маси

  4. показване на множество записи чрез използване на набор от резултати

  5. Получаване на максимална стойност от редове и присъединяване към друга таблица