Saya tahu ini adalah posting lama yang jahat dengan banyak jawaban tetapi banyak orang berpikir bahwa mereka PERLU untuk memisahkan hal-hal dan menyatukannya kembali atau mereka bersikeras bahwa tidak ada cara untuk secara implisit melakukan konversi yang diminta oleh OP asli. .
Untuk meninjau dan berharap memberikan jawaban yang mudah kepada orang lain dengan pertanyaan yang sama, OP bertanya bagaimana mengkonversi '10 / 15/2008 10:06:32 PM 'menjadi DATETIME. Sekarang, SQL Server memang memiliki beberapa dependensi bahasa untuk konversi sementara tetapi jika bahasanya adalah bahasa Inggris atau yang serupa, ini menjadi masalah sederhana ... lakukan saja konversi dan jangan khawatir tentang formatnya. Misalnya (dan Anda dapat menggunakan CONVERT atau CAST) ...
SELECT UsingCONVERT = CONVERT(DATETIME,'10/15/2008 10:06:32 PM')
,UsingCAST = CAST('10/15/2008 10:06:32 PM' AS DATETIME)
;
... dan itu menghasilkan jawaban ikuti, yang keduanya benar.
Seperti yang mereka katakan di iklan TV, "Tapi tunggu! Jangan pesan dulu! Tanpa biaya tambahan, itu bisa melakukan JAUH lebih banyak!"
Mari kita lihat kekuatan konversi temporal yang sebenarnya dengan DATETIME dan sebagian memeriksa kesalahan yang dikenal sebagai DATETIME2. Lihat format aneh yang DATETIME dapat tangani secara ajaib dan DATETIME2 tidak bisa. Jalankan kode berikut dan lihat ...
--===== Set the language for this example.
SET LANGUAGE ENGLISH --Same a US-English
;
--===== Use a table constructor as if it were a table for this example.
SELECT *
,DateTimeCONVERT = TRY_CONVERT(DATETIME,StringDT)
,DateTimeCAST = TRY_CAST(StringDT AS DATETIME)
,DateTime2CONVERT = TRY_CONVERT(DATETIME2,StringDT)
,DateTime2CAST = TRY_CAST(StringDT AS DATETIME2)
FROM (
VALUES
('Same Format As In The OP' ,'12/16/2001 01:51:01 PM')
,('Almost Normal' ,'16 December, 2001 1:51:01 PM')
,('More Normal' ,'December 16, 2001 01:51:01 PM')
,('Time Up Front + Spaces' ,' 13:51:01 16 December 2001')
,('Totally Whacky Format #01' ,' 16 13:51:01 December 2001')
,('Totally Whacky Format #02' ,' 16 December 13:51:01 2001 ')
,('Totally Whacky Format #03' ,' 16 December 01:51:01 PM 2001 ')
,('Totally Whacky Format #04' ,' 2001 16 December 01:51:01 PM ')
,('Totally Whacky Format #05' ,' 2001 December 01:51:01 PM 16 ')
,('Totally Whacky Format #06' ,' 2001 16 December 01:51:01 PM ')
,('Totally Whacky Format #07' ,' 2001 16 December 13:51:01 PM ')
,('Totally Whacky Format #08' ,' 2001 16 13:51:01 PM December ')
,('Totally Whacky Format #09' ,' 13:51:01 PM 2001.12/16 ')
,('Totally Whacky Format #10' ,' 13:51:01 PM 2001.December/16 ')
,('Totally Whacky Format #11' ,' 13:51:01 PM 2001.Dec/16 ')
,('Totally Whacky Format #12' ,' 13:51:01 PM 2001.Dec.16 ')
,('Totally Whacky Format #13' ,' 13:51:01 PM 2001/Dec.16')
,('Totally Whacky Format #14' ,' 13:51:01 PM 2001 . 12/16 ')
,('Totally Whacky Format #15' ,' 13:51:01 PM 2001 . December / 16 ')
,('Totally Whacky Format #16' ,' 13:51:01 PM 2001 . Dec / 16 ')
,('Totally Whacky Format #17' ,' 13:51:01 PM 2001 . Dec . 16 ')
,('Totally Whacky Format #18' ,' 13:51:01 PM 2001 / Dec . 16')
,('Totally Whacky Format #19' ,' 13:51:01 PM 2001 . Dec - 16 ')
,('Totally Whacky Format #20' ,' 13:51:01 PM 2001 - Dec - 16 ')
,('Totally Whacky Format #21' ,' 13:51:01 PM 2001 - Dec . 16')
,('Totally Whacky Format #22' ,' 13:51:01 PM 2001 - Dec / 16 ')
,('Totally Whacky Format #23' ,' 13:51:01 PM 2001 / Dec - 16')
,('Just the year' ,' 2001 ')
,('YYYYMM' ,' 200112 ')
,('YYYY MMM' ,'2001 Dec')
,('YYYY-MMM' ,'2001-Dec')
,('YYYY . MMM' ,'2001 . Dec')
,('YYYY / MMM' ,'2001 / Dec')
,('YYYY - MMM' ,'2001 / Dec')
,('Forgot The Spaces #1' ,'2001December26')
,('Forgot The Spaces #2' ,'2001Dec26')
,('Forgot The Spaces #3' ,'26December2001')
,('Forgot The Spaces #4' ,'26Dec2001')
,('Forgot The Spaces #5' ,'26Dec2001 13:51:01')
,('Forgot The Spaces #6' ,'26Dec2001 13:51:01PM')
,('Oddly, this doesn''t work' ,'2001-12')
,('Oddly, this doesn''t work' ,'12-2001')
) v (Description,StringDT)
;
Jadi, ya ... SQL Server TIDAK benar-benar memiliki metode yang cukup fleksibel dalam menangani semua jenis format temporal yang aneh dan tidak perlu penanganan khusus. Kami bahkan tidak perlu menghapus "PM" yang ditambahkan ke waktu 24 jam. Ini "PFM" (Sihir Freakin Murni).
Hal-hal akan sedikit berbeda tergantung pada BAHASA adalah bahwa Anda telah memilih untuk server Anda, tetapi banyak hal akan ditangani dengan cara baik.
Dan konversi "sihir otomatis" ini bukanlah sesuatu yang baru. Mereka sangat jauh ke belakang.