Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menentukan literal tanggal saat menulis kueri SQL dari SQL Server yang ditautkan ke Oracle?

Saya lebih suka 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

Literal tanggal sederhana tidak independen dari budaya...

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

Tetapi berhasil - namun - dengan jenis target DATE (perbedaan ini agak aneh...):

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

Terima kasih untuk lad2025 Saya ingin menambahkan ISO 8601 "penuh" untuk melengkapi, yang berfungsi dengan baik:

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. cara yang efisien untuk mengimplementasikan paging

  2. Terjadi kesalahan terkait jaringan atau spesifik contoh saat membuat sambungan ke SQL Server

  3. Bagaimana Menambahkan ATAU Menjatuhkan Kolom Dari Tabel yang Diaktifkan CDC Tanpa Kehilangan Data di Database SQL Server - Tutorial SQL Server

  4. Kesalahan SQL Server 109:Ada lebih banyak kolom dalam pernyataan INSERT daripada nilai yang ditentukan dalam klausa VALUES

  5. Menjelajahi format tanggal Postgres dan fungsinya yang berbeda