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 CONVERT ()

Trong SQL Server, bạn có thể sử dụng CONVERT() 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. Do đó, nếu bạn cần chuyển đổi một chuỗi sang định dạng ngày / giờ, hàm này có thể giúp ích.

Bài viết này chứa các ví dụ để chứng minh cách sử dụng của nó.

Cú pháp

Cú pháp như sau:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

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 .
style
Một biểu thức số nguyên chỉ định cách CONVERT() hàm sẽ dịch biểu thức . Đối với giá trị kiểu là NULL, NULL được trả về. data_type xác định phạm vi.

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 là đối số đầu tiên).

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Kết quả:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Tất nhiên, 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 CONVERT(date, 'Homer') 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 CONVERT(datetime, '20 Dec 2018') AS Result;

Kết quả:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 00:00:00.000 |
+-------------------------+

Bạn cũng có thể chỉ định thời gian:

SELECT CONVERT(datetime, '2pm 20 Dec 2018') 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

Trong ví dụ này, chúng tôi chuyển đổi thành datetime2 kiểu dữ liệu:

SELECT CONVERT(datetime2, '20 Dec 2018') 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 CONVERT(datetimeoffset, '20 Dec 2018') 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

Trong ví dụ này, chúng tôi chuyển đổi thành smalldatetime kiểu dữ liệu:

SELECT CONVERT(smalldatetime, '20 Dec 2018') 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 CONVERT(time, '20 Dec 2018') 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 CONVERT(time, '2pm') 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 CONVERT(time, '2pm 20 Dec 2018') 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 CONVERT(datetime, '2pm') AS Result;

Kết quả:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

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 CONVERT() không.

Bạn cũng có thể muốn xem CAST() , là một cách chuyển đổi giữa các kiểu dữ liệu theo tiêu chuẩn ANSI SQL. Đây là cách chuyển đổi chuỗi thành ngày / giờ bằng cách sử dụng 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. Làm cách nào để tiện ích mở rộng SQLSRV hoạt động với PHP, vì MSSQL không được dùng nữa?

  2. Cách nhận các giá trị không chứa số trong SQL Server

  3. Cách đặt thứ hai là ngày đầu tuần trong SQL Server

  4. Cách hiểu về kiểu dữ liệu địa lý của máy chủ SQL

  5. PI () Ví dụ trong SQL Server