Trong SQL Server, bạn có thể sử dụng CAST()
hàm để chuyển đổi một biểu thức của một kiểu dữ liệu này sang một kiểu dữ liệu khác. Hàm này hoạt động gần giống như CONVERT()
, ngoại trừ cú pháp hơi khác (và CAST()
không chấp nhận style
đối số).
Vì vậy, nếu bạn cần chuyển đổi một chuỗi thành giá trị ngày / giờ, bạn có thể sử dụng CONVERT()
hoặc hàm CAST()
chức năng.
Và nếu bạn gặp lỗi khi sử dụng hai hàm đó, thì PARSE()
chức năng có thể chỉ là những gì bạn cần.
Bài viết này chứa các ví dụ sử dụng CAST()
chức năng.
Cú pháp
Cú pháp như sau:
CAST ( expression AS data_type [ ( length ) ] )
Các đối số này được định nghĩa như sau:
-
expression
- Bất kỳ biểu thức hợp lệ nào.
-
data_type
- Kiểu dữ liệu đích. Điều này bao gồm xml , bigint và sql_variant . Không thể sử dụng kiểu dữ liệu bí danh.
-
length
- Một số nguyên tùy chọn chỉ định độ dài của kiểu dữ liệu đích. Giá trị mặc định là
30
.
Ví dụ 1 - Chuyển đổi sang kiểu dữ liệu ngày
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 | +------------+
Giống như với CONVERT()
chuỗi cần phải ở kiểu có thể chuyển đổi thành kiểu dữ liệu được chỉ định, nếu không bạn sẽ gặp lỗi:
SELECT CAST('Homer' AS date) AS Result;
Kết quả:
Conversion failed when converting date and/or time from character string.
Ví dụ 2 - Chuyển đổi sang Kiểu dữ liệu datetime
Trong ví dụ này, chúng tôi chuyển đổi thành ngày giờ kiểu dữ liệu:
SELECT CAST('20 Dec 2018' AS datetime) AS Result;
Kết quả:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
Bạn cũng có thể chỉ định thời gian cùng với ngày:
SELECT CAST('2pm 20 Dec 2018' AS datetime) AS Result;
Kết quả:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Ví dụ 3 - Chuyển đổi sang Kiểu dữ liệu datetime2
Ở đây chúng tôi chuyển đổi thành datetime2 kiểu dữ liệu:
SELECT CAST('20 Dec 2018' AS datetime2) AS Result;
Kết quả:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Ví dụ 4 - Chuyển đổi sang Kiểu dữ liệu datetimeoffset
Trong ví dụ này, chúng tôi chuyển đổi thành datetimeoffset kiểu dữ liệu:
SELECT CAST('20 Dec 2018' AS datetimeoffset) AS Result;
Kết quả:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Ví dụ 5 - Chuyển đổi sang Kiểu dữ liệu smalldatetime
Ở đây chúng tôi chuyển đổi thành smalldatetime kiểu dữ liệu:
SELECT CAST('20 Dec 2018' AS smalldatetime) AS Result;
Kết quả:
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
Ví dụ 6 - Chuyển đổi sang loại dữ liệu thời gian
Trong ví dụ này, chúng tôi chuyển đổi thành thời gian kiểu dữ liệu:
SELECT CAST('20 Dec 2018' AS time) AS Result;
Kết quả:
+----------+ | Result | |----------| | 00:00:00 | +----------+
Trong trường hợp đó, chúng tôi đã chỉ định một ngày chứ không phải thời gian, vì vậy nó quay trở lại là 00:00:00
. Dưới đây là một ví dụ khác mà chúng tôi thực sự chỉ định thời gian:
SELECT CAST('2pm' AS time) AS Result;
Kết quả:
+----------+ | Result | |----------| | 14:00:00 | +----------+
Nhưng nếu chúng tôi thêm ngày, chúng tôi sẽ gặp lỗi (không giống như ví dụ trước đó khi chúng tôi chuyển đổi thành datetime ):
SELECT CAST('2pm 20 Dec 2018' AS time) AS Result;
Kết quả:
Conversion failed when converting date and/or time from character string.
Vì vậy, trong trường hợp này, bạn cần chuyển đổi thành datetime hoặc smalldatetime .
Ví dụ 7 - Bỏ qua ngày
Nếu bạn bỏ qua ngày trong khi chuyển đổi thành ngày giờ hoặc smalldatetime kiểu dữ liệu, nó sẽ trả về 1900-01-01
như ngày:
SELECT CAST('2pm' AS datetime) AS Result;
Kết quả:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Nếu bạn thích sử dụng, hãy sử dụng CONVERT()
, hãy xem chuỗi này thành ngày / giờ CONVERT()
ví dụ bằng cách sử dụng các ví dụ tương tự như trên.
Ngoài ra, như đã đề cập, nếu bạn gặp lỗi khi cố gắng chuyển đổi một chuỗi thành một ngày, hãy thử PARSE()
chức năng thay thế. Nó sẽ hoạt động trong một số trường hợp CAST()
không.