Nếu bạn cần chuyển đổi một chuỗi thành giá trị ngày / giờ trong SQL Server, bạn có một số tùy chọn. Trong bài đăng này, tôi phác thảo sáu hàm T-SQL cho phép bạn thực hiện điều này.
Sáu chức năng là:
-
CAST()
-
CONVERT()
-
PARSE()
-
TRY_CAST()
-
TRY_CONVERT()
-
TRY_PARSE()
Dưới đây là ví dụ về cách bạn có thể sử dụng các hàm này để chuyển đổi một chuỗi thành kiểu dữ liệu ngày / giờ.
Hàm CAST ()
Trong ví dụ này, chúng tôi chuyển đổi chuỗi thành ngày kiểu dữ liệu (chúng tôi chỉ định điều này bằng cách sử dụng date
như đối số thứ hai).
SELECT CAST('20 Dec 2018' AS date) AS Result;
Kết quả:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Để biết thêm ví dụ, hãy xem Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng cách sử dụng CAST()
.
Hàm CONVERT ()
Ở đây, chúng tôi thực hiện chuyển đổi tương tự như ví dụ trước, nhưng với CONVERT()
hàm số. Sự khác biệt duy nhất ở đây là cú pháp.
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Kết quả:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Để biết thêm ví dụ, hãy xem Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng cách sử dụng CONVERT()
.
Hàm PARSE ()
Trong ví dụ này, tôi thêm ngày trong tuần như một phần của chuỗi. Lý do tôi làm điều này là để chứng minh lợi ích của chức năng này so với các chức năng khác. Nếu bạn cung cấp ngày ở định dạng này cho các chức năng khác, bạn sẽ gặp lỗi. Nhưng PARSE()
hàm có thể xử lý điều này:
SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) AS 'Result';
Kết quả:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Để biết thêm ví dụ, hãy xem Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng cách sử dụng PARSE()
.
Hàm TRY_CAST ()
Bạn có thể sử dụng TRY_CAST()
thay vì CAST()
để cung cấp cách xử lý lỗi mượt mà hơn. Khi sử dụng CAST()
, nếu quá trình truyền không thành công, nó sẽ trả về một lỗi. Tuy nhiên, nếu bạn sử dụng TRY_CAST()
thay vào đó, nó trả về NULL
trong những trường hợp như vậy.
Dưới đây là một ví dụ về việc truyền không thành công:
SELECT TRY_CAST('Next month' AS date) AS Result;
Kết quả:
+----------+ | Result | |----------| | NULL | +----------+
Nếu chúng tôi cung cấp cùng giá trị đó cho CAST()
thay vào đó, đây là những gì sẽ xảy ra:
SELECT CAST('Next month' AS date) AS Result;
Kết quả:
Conversion failed when converting date and/or time from character string.
Để biết thêm ví dụ, hãy xem CAST
so với TRY_CAST
trong SQL Server:Sự khác biệt là gì?
Hàm TRY_CONVERT ()
Bạn cũng có thể sử dụng TRY_CONVERT()
thay vì CONVERT()
để xử lý lỗi tốt hơn. Nếu CONVERT()
chức năng không thành công nó trả về một lỗi. Nhưng nếu TRY_CONVERT()
không thành công, nó trả về NULL
.
Dưới đây là một ví dụ về chuyển đổi không thành công:
SELECT TRY_CONVERT(date, 'Next month') AS Result;
Kết quả:
+----------+ | Result | |----------| | NULL | +----------+
Nếu chúng tôi cung cấp cùng một giá trị đó cho CONVERT()
thay vào đó, đây là những gì sẽ xảy ra:
SELECT CONVERT(date, 'Next month') AS Result;
Kết quả:
Conversion failed when converting date and/or time from character string.
Để biết thêm ví dụ, hãy xem CONVERT
so với TRY_CONVERT
trong SQL Server:Sự khác biệt là gì?
Hàm TRY_PARSE ()
Bạn cũng có thể sử dụng TRY_PARSE()
thay vì PARSE()
để xử lý lỗi tốt hơn. Nếu PARSE()
chức năng không thành công nó trả về một lỗi. Nhưng nếu TRY_PARSE()
không thành công, nó trả về NULL
.
Dưới đây là một ví dụ về chuyển đổi không thành công:
SELECT TRY_PARSE('Next month' AS date) AS Result;
Kết quả:
+----------+ | Result | |----------| | NULL | +----------+
Nếu chúng tôi cung cấp cùng giá trị đó cho PARSE()
thay vào đó, đây là những gì sẽ xảy ra:
SELECT PARSE('Next month' AS date) AS Result;
Kết quả:
Error converting string value 'Next month' into data type date using culture ''.