Khi sử dụng SQL Server, bạn có thể chuyển đổi giá trị ngày / giờ thành một chuỗi bằng cách sử dụng CONVERT()
hàm số. Chức năng này cho phép bạn chuyển đổi giữa các kiểu dữ liệu khác nhau.
Trong bài viết này, chúng tôi sẽ chuyển đổi giữa các loại dữ liệu ngày / giờ khác nhau thành varchar
hoặc nvarchar
chuỗi.
Một trong những điểm hay về chức năng này là nó cho phép bạn chỉ định kiểu mà ngày sẽ được trả về. Ví dụ:bạn có thể chỉ định xem ngày đó có được trả về là mm / dd / yyyy không , yyyy.mm.dd , Thứ hai, yyyy , v.v. Bạn cũng có thể chỉ định xem thành phần thời gian có được trả lại hay không và nó được tạo kiểu như thế nào.
Cú pháp
Đầu tiên, đây là cách cú pháp chính thức hoạt động:
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 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
. -
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ụ cơ bản
Trong ví dụ này, chúng tôi khai báo một biến và gán một giá trị từ GETDATE()
hàm số. Sau đó, chúng tôi trả về giá trị và chúng tôi cũng chuyển đổi giá trị đó thành varchar
và trả lại:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Kết quả:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
Độ dài mặc định của kiểu dữ liệu trả về là 30
, vì vậy mặc dù chúng tôi chỉ chỉ định varchar
, nó sẽ trả về kết quả là varchar(30)
.
Trong ví dụ này, chúng tôi không cung cấp đối số thứ ba để chỉ ra kiểu mà chúng tôi muốn nó trả về. Do đó, nó đã được chuyển đổi bằng cách sử dụng kiểu mặc định cho datetime và smalldatetime kiểu dữ liệu, là 0
hoặc 100
(thêm về các kiểu bên dưới).
Chỉ định kiểu
Bạn có thể sử dụng đối số thứ ba để chỉ định kiểu mà giá trị trả về sẽ sử dụng:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Kết quả:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
Trong ví dụ này, chúng tôi đã chỉ định kiểu 102
, là tiêu chuẩn ANSI để hiển thị ngày có thành phần năm bốn chữ số.
Để thay đổi định dạng này thành định dạng ANSI với năm hai chữ số, chúng ta có thể sử dụng kiểu 2
:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Kết quả:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Bạn có thể xem thêm các ví dụ về CONVERT () từ Ngày / Giờ đến Ví dụ về chuỗi trong SQL Server.