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

Ví dụ về Chuyển đổi "date" thành "datetime" trong SQL Server (T-SQL)

Bài viết này chứa các ví dụ về chuyển đổi ngày giá trị thành ngày giờ giá trị trong SQL Server.

Khi bạn chuyển đổi ngày giá trị thành datetime , thông tin bổ sung được thêm vào giá trị. Điều này là do ngày giờ kiểu dữ liệu chứa cả thông tin ngày và giờ. Ngày mặt khác, kiểu dữ liệu chỉ chứa thông tin ngày tháng.

Ví dụ 1 - Chuyển đổi ngầm định

Dưới đây là ví dụ về chuyển đổi ngầm định giữa ngày ngày giờ .

DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SELECT 
  @thedate AS 'date',
  @thedatetime AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

Đây là một chuyển đổi ngầm định vì chúng tôi không sử dụng một chức năng chuyển đổi (như những chức năng bên dưới) để chuyển đổi nó một cách rõ ràng. Trong trường hợp này, SQL Server thực hiện một chuyển đổi ẩn đằng sau hậu trường khi chúng tôi cố gắng chỉ định ngày giá trị thành ngày giờ biến.

Chúng ta có thể thấy rằng ngày biến chỉ chứa thông tin ngày tháng, trong khi đó, ngày giờ biến chứa cả thông tin ngày và giờ.

Khi bạn chuyển đổi giữa ngày ngày giờ , thành phần thời gian được đặt thành 00:00:00.000 . Điều này là do giá trị ngày không chứa bất kỳ thông tin thời gian nào, do đó, SQL Server không có cách nào để biết bạn muốn mấy giờ (nếu có).

Ví dụ 2 - Sửa đổi thời gian

Nếu bạn cần thay đổi thời gian (nhưng giữ nguyên ngày), bạn có thể sử dụng DATEADD() chức năng để làm điều đó.

DECLARE @thedate date, @thedatetime datetime
SET @thedate = '2020-12-01'
SET @thedatetime = @thedate
SET @thedatetime = DATEADD(hour, 8, @thedatetime)
SELECT 
  @thedate AS 'date',
  @thedatetime AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

Ví dụ 3 - Chuyển đổi rõ ràng bằng CAST ()

Dưới đây là một ví dụ về chuyển đổi rõ ràng. Trong trường hợp này, tôi sử dụng CAST() hoạt động trực tiếp trong SELECT tuyên bố để chuyển đổi rõ ràng giữa ngày ngày giờ .

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  CAST(@thedate AS datetime) AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

Vì vậy, chúng tôi nhận được kết quả tương tự như chuyển đổi ngầm định.

Chúng tôi cũng có thể điều chỉnh thời gian như sau:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  DATEADD(hour, 8, CAST(@thedate AS datetime)) AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

Ví dụ 4 - Chuyển đổi rõ ràng bằng CONVERT ()

Dưới đây là một ví dụ về chuyển đổi rõ ràng bằng cách sử dụng CONVERT() hàm thay vì CAST() .

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  CONVERT(datetime, @thedate) AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 00:00:00.000 |
+------------+-------------------------+

Và điều chỉnh thời gian:

DECLARE @thedate date
SET @thedate = '2020-12-01'
SELECT 
  @thedate AS 'date',
  DATEADD(hour, 8, CONVERT(datetime, @thedate)) AS 'datetime';

Kết quả:

+------------+-------------------------+
| date       | datetime                |
|------------+-------------------------|
| 2020-12-01 | 2020-12-01 08:00:00.000 |
+------------+-------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hãy thử các phương pháp hay nhất về giám sát cơ sở dữ liệu MySQL này

  2. Cuộc gọi ODBC không thành công với thủ tục được lưu trữ - Chuyển qua truy vấn

  3. Thêm một hàng tóm tắt với tổng số

  4. Có thể để mệnh đề Đầu ra SQL trả về một cột không được chèn vào không?

  5. Khóa tổng hợp duy nhất của SQL Server của hai trường với tự động tăng trường thứ hai