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

Cara Mengekstrak atau Mengonversi Data Waktu dari String di SQL Server

Masalah:

Anda ingin mengonversi string yang berisi tanggal dan waktu ke nilai TIME di SQL Server.

Kita perlu mengonversi string yang berisi nama hari kerja, tanggal, dan waktu menjadi nilai TIME.

Solusi 1:

Kami akan menggunakan PARSE() fungsi. Inilah kueri yang akan Anda tulis:

SELECT 
  PARSE('Sunday, 2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Ini hasilnya:

11:23:11.1134505

Diskusi:

Gunakan PARSE() berfungsi untuk mengonversi string yang berisi nama hari kerja, tanggal, dan waktu ke tipe data TIME. Fungsi ini mengambil string yang akan dikonversi, kata kunci AS, dan tipe data baru (dalam contoh kita, TIME ). String harus berisi nilai yang mewakili tipe data ini. Dalam contoh kita, string 'February 2, 2020 11:23:11.1134505' menyimpan nilai waktu.

Perhatikan bahwa waktu hanyalah bagian dari string ini, yang juga berisi nama hari dalam seminggu. Jangan gunakan CONVERT() atau CAST() fungsi dalam hal ini; mereka juga mengembalikan tipe data TIME, tetapi tanpa hari dalam seminggu.

Jika Anda menggunakan bahasa lisan yang berbeda dari bahasa server, sertakan kata kunci MENGGUNAKAN dan kode budaya yang sesuai. Untuk bahasa Polandia, tulis:

SELECT 
  PARSE('Niedziela, 2 lutego 2020 11:23:11.1134505' AS TIME USING 'pl-PL' ) 
  AS time_value;

Untuk lebih lanjut tentang nilai parameter budaya, lihat dokumentasi SQL Server resmi.

Dalam hal ini, Anda harus menggunakan PARSE() berfungsi, meskipun tidak memiliki kinerja terbaik. Jika Anda mengoperasikan string yang mewakili nilai waktu yang tidak menyimpan data tambahan (seperti nama hari minggu), gunakan CASE() fungsi. Ini contohnya.

Solusi 2:

SELECT 
  CAST('2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Ini hasilnya:

11:23:11.1134505

String yang berisi tanggal dan waktu untuk mengkonversi harus dalam format tipe data tanggal dan waktu T-SQL. Anda dapat membaca lebih lanjut di dokumentasi SQL Server.

CAST() fungsinya adalah ANSI SQL Standard dan kinerjanya lebih baik daripada CONVERT() atau PARSE() .

Terakhir, Anda juga dapat menggunakan CONVERT() fungsi. Lihat contoh berikutnya.

Solusi 3:

  SELECT 
  CONVERT(TIME, '2 Feb, 2020 11:23:11.1134505') 
  AS time_value;

Hasilnya:

11:23:11.1134505

CONVERT() function membutuhkan tiga argumen:tipe data baru, string yang akan dikonversi, dan format (opsional) yang diinginkan. Namun, Anda hanya boleh menggunakan fungsi ini jika Anda perlu menentukan bagaimana data tanggal dan waktu harus diformat, karena kinerjanya tidak sebaik CAST() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengumpulan Data Otomatis tentang Tugas yang Selesai di MS SQL Server

  2. Lakukan regex (ganti) dalam kueri SQL

  3. Cara Membuat Riwayat ATAU Tampilan Audit dari Tabel Change Data Capture (CDC) di SQL Server - Tutorial SQL Server

  4. Cara Memperbaiki "Fungsi partisi terkait menghasilkan lebih banyak partisi daripada grup file yang disebutkan dalam skema" Msg 7707 di SQL Server

  5. Dapatkan semua nama tabel dari database tertentu dengan kueri SQL?