Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng CAST ()

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 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn câu lệnh để trả về cha mẹ và con vô hạn

  2. Làm cách nào để xóa các ký tự ASCII mở rộng khỏi một chuỗi trong T-SQL?

  3. Quy trình được lưu trữ là gì và tại sao Quy trình được lưu trữ?

  4. Cách xác định khóa chính tự động tăng dần trong SQL Server

  5. Làm thế nào để tạo ra một phạm vi số giữa hai số?