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

Bagaimana fungsi konversi SQL bekerja saat mengonversi datetime menjadi float?

DateTime sering direpresentasikan sebagai hitungan hari dari tanggal yang telah ditentukan sebelumnya (umumnya dikenal sebagai epoch) pada bagian bilangan bulat dan persentase hari yang berlalu sejak tengah malam pada bagian pecahan.

SQL Server bukan pengecualian untuk ini, jadi konversi ke Float sangat masuk akal. Hari 0 adalah 01 Jan 1900 00:00:00 (AFAIK, tanpa zona waktu tertentu, jadi Anda harus menganggapnya sebagai "waktu lokal").

Jadi, Anda dapat mencoba ini:

declare @ADate DateTime;
set @ADate = '19000101 00:00:00';
select CONVERT(float, @ADate);  --should print 0
set @ADate = '19000101 12:00:00';
select CONVERT(float, @ADate);  --should print 0.5
set @ADate = '19001231 06:00:00';
select CONVERT(float, @ADate);  --should print 364.25

Jadi, untuk hasil Anda, 40183 hari telah berlalu sejak 01/01/1900 00:00:00 dan 07/01/2010 00:00:00

Klarifikasi:Sistem mirip Unix menggunakan pendekatan berbeda untuk menyimpan datetimes:Detik sejak Unix epoch (1 Jan 1970 00:00:00 UTC), yang lebih dikenal sebagai epoch time.

[Sunting]Format tanggal pada tanggapan ini diubah menjadi format YYYYMMDD pada 20140416, setelah beberapa tahun pengalaman baru dengan SQL Server (dan seperti yang dikatakan @Damien dalam komentarnya) ini adalah satu-satunya format yang aman.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menilai Pengaturan Pemantauan Kinerja Basis Data Anda

  2. Perbaiki "Kesalahan overflow aritmatika mengonversi int ke tipe data numerik" di SQL Server

  3. Cara Menjatuhkan atau Menghapus semua Pemicu dari Database di SQL Server

  4. Cara menghasilkan skrip Batasan Unik drop di Database SQL Server - Tutorial SQL Server / TSQL Bagian 99

  5. Temukan Dependensi di SQL Server:sql_expression_dependencies