Chuyển đổi ‘datetime’ thành ‘time’ trong SQL Server (Ví dụ T-SQL) – sql chuyển đổi ngày giờ thành giờ

Bạn đang xem : sql chuyển đổi datetime thành giờ

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

Một trong những lợi ích của việc chuyển đổi giá trị datetime thành time là bạn giảm kích thước bộ nhớ từ 8 byte xuống 3, 4 hoặc 5 byte ( tùy thuộc vào độ chính xác bạn sử dụng cho giá trị thời gian ). Nói chính xác, thời gian sử dụng 4, 5 hoặc 6 byte, vì một byte phụ được sử dụng để lưu trữ độ chính xác của nó.

Khi bạn chuyển đổi giá trị datetime thành time , chỉ phần thời gian của giá trị được sao chép. Kết quả chính xác sẽ phụ thuộc vào độ chính xác của phân số giây mà bạn gán cho thời gian . Khi độ chính xác của thời gian nhỏ hơn độ chính xác của ngày giờ , giây phân số được làm tròn để phù hợp với độ chính xác của thời gian .

Loại dữ liệu datetime có tối đa 3 chữ số cho phần giây phân số của nó. Độ chính xác của nó được làm tròn đến gia số .000, .003 hoặc .007 giây.

Mặt khác, kiểu dữ liệu thời gian cho phép bạn chỉ định độ chính xác giây phân số từ 0 đến 7. Điều này đạt được bằng cách sử dụng time (n) cú pháp, trong đó n là tỷ lệ từ 0 đến 7. Nếu bạn không chỉ định điều này, nó sẽ sử dụng 7, cung cấp độ chính xác 100 nano giây.

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 giờ thời gian .

 KHAI BÁO
  @thedatetime datetime,
  thời @thetime;
SET @thedatetime = '2025-05-21 10: 15: 30.123';
SET @thetime = @thedatetime;
LỰA CHỌN
  @thedatetime AS 'datetime',
  @thetime AS 'thời gian';

Kết quả:

 + ------------------------- + ------------------ +
| ngày giờ | thời gian |
| ------------------------- + ------------------ |
| 2025-05-21 10: 15: 30.123 | 10: 15: 30.1233333 |
+ ------------------------- + ------------------ +

Đây là một chuyển đổi ngầm định bởi vì chúng tôi không sử dụng một hàm chuyển đổi (như những hàm 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 sau hậu trường khi chúng tôi cố gắng gán giá trị datetime cho một biến time .

Điều rõ ràng nhất về kết quả này là giá trị thời gian không bao gồm ngày. Điều này được mong đợi, vì kiểu dữ liệu thời gian chỉ để lưu trữ các giá trị thời gian, không phải giá trị ngày.

Xem Thêm  Tải IDM 6.40 Build 8, Phần mềm download nhanh cho máy tính, Internet D - activex là gì

Chúng tôi cũng có thể thấy rằng biến thời gian có độ chính xác giây phân số nhiều hơn và chúng tôi kết thúc bằng một phần phân số của 1233333 (so với 123 cho giá trị datetime ). Điều này xảy ra vì giá trị thời gian đang sử dụng thang đo mặc định là 7 (vì chúng tôi không chỉ định rõ ràng thang đo).

Ví dụ 2 – Làm tròn

Loại dữ liệu datetime được làm tròn đến gia số .000, .003 hoặc .007 giây. Ngay cả khi bạn đặt nó thành một giá trị khác một cách rõ ràng, nó sẽ được làm tròn.

Đây là một ví dụ:

 KHAI BÁO
  @thedatetime datetime,
  thời @thetime;
SET @thedatetime = '2025-05-21 10: 15: 30.125';
SET @thetime = @thedatetime;
LỰA CHỌN
  @thedatetime AS 'datetime',
  @thetime NHƯ 'thetime';

Kết quả:

 + ------------------------- + ------------------ +
| ngày giờ | thời gian |
| ------------------------- + ------------------ |
| 2025-05-21 10: 15: 30.127 | 10: 15: 30.1266667 |
+ ------------------------- + ------------------ +

Trong ví dụ này, tôi đặt giây phân số thành 125 nhưng datetime đã làm tròn thành 127 (vì nó chỉ có thể được làm tròn thành số gia .000, .003 hoặc 0,007 giây).

Tuy nhiên, giá trị thời gian hãy đặt giây phân số thành 1266667.

Nếu ngay từ đầu, chúng tôi chỉ đặt giá trị ban đầu thành thời gian , phần phân số của nó sẽ trả về 1250000.

Ví dụ 3 – Độ chính xác / Độ chính xác

Như đã đề cập, kiểu dữ liệu thời gian cho phép bạn chỉ định độ chính xác của phần giây. Nếu bạn không làm điều này, nó sử dụng 7 (do đó, ví dụ trước sử dụng 7).

Bạn có thể sửa đổi điều này bằng cách sử dụng cú pháp time (n) . Do đó, tôi có thể đã sử dụng thời gian (7) cho các ví dụ trước để nhận được kết quả tương tự.

Trong ví dụ này, tôi xóa hoàn toàn số giây phân số bằng cách sử dụng thời gian (0) :

 KHAI BÁO
  @thedatetime datetime,
  thời gian @thetime (0);
SET @thedatetime = '2025-05-21 10: 15: 30.125';
SET @thetime = @thedatetime;
LỰA CHỌN
  @thedatetime AS 'datetime',
  @thetime AS 'thời gian';

Kết quả:

 + ------------------------- + ---------- +
| ngày giờ | thời gian |
| ------------------------- + ---------- |
| 2025-05-21 10: 15: 30.127 | 10:15:30 |
+ ------------------------- + ---------- +

Khi chúng tôi thực hiện việc này, kích thước lưu trữ của giá trị thời gian sẽ giảm xuống 3 byte (4 byte bao gồm độ chính xác) thay vì 8 byte cho giá trị datetime .

Xem Thêm  Tìm hiểu cách thêm cột trong SQL với ví dụ - thêm bảng sql cột

Hãy lưu ý rằng việc sử dụng độ chính xác thấp hơn giá trị ban đầu sẽ làm cho kết quả được làm tròn để phù hợp với độ chính xác đã chỉ định.

Ví dụ:

 KHAI BÁO
  @thedatetime datetime,
  thời gian @thetime (0);
SET @thedatetime = '2025-05-21 10: 15: 30.525';
SET @thetime = @thedatetime;
LỰA CHỌN
  @thedatetime AS 'datetime',
  @thetime AS 'thời gian';

Kết quả:

 + ------------------------- + ---------- +
| ngày giờ | thời gian |
| ------------------------- + ---------- |
| 2025-05-21 10: 15: 30.527 | 10:15:31 |
+ ------------------------- + ---------- +

Ví dụ 4 – 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 hàm CAST () ngay trong câu lệnh SELECT để chuyển đổi rõ ràng giữa datetime time >.

 DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10: 15: 30.125';
LỰA CHỌN
  @thedatetime AS 'datetime',
  CAST (@thedatetime AS time (0)) AS 'time (0)';

Kết quả:

 + ------------------------- + ----------- +
| ngày giờ | thời gian (0) |
| ------------------------- + ----------- |
| 2025-05-21 10: 15: 30.127 | 10:15:30 |
+ ------------------------- + ----------- +

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

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

 DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10: 15: 30.125';
LỰA CHỌN
  @thedatetime AS 'datetime',
  CONVERT (thời gian (0), @thedatetime) NHƯ 'thời gian (0)';

Kết quả:

 + ------------------------- + ----------- +
| ngày giờ | thời gian (0) |
| ------------------------- + ----------- |
| 2025-05-21 10: 15: 30.127 | 10:15:30 |
+ ------------------------- + ----------- +


Xem thêm những thông tin liên quan đến chủ đề sql chuyển đổi ngày giờ thành giờ

SQL Timestamp/Datetime Ngày Giờ – Tự Học SQL CSDL Cơ Bản cho Người Mới Phần 5

  • Tác giả: Vịt làm Data
  • Ngày đăng: 2021-08-12
  • Đánh giá: 4 ⭐ ( 1891 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Những thứ cần biết về ngày giờ hay còn gọi là Timestamp của SQL Query.
    👉 Series Tự Học SQL CSDL Cơ Bản cho Người Mới Bắt Đầu sẽ giúp những bạn non-IT tìm hiểu SQL một cách dễ hiểu nhất. Xem đầy đủ playlist https://www.youtube.com/playlist?list=PL01fPqVNMdrmtcb_Yui_Oh23X_3laoZoO
    👉 Hướng dẫn đăng ký Metabase: https://www.youtube.com/watch?v=FUotBX7zNs8&t=74s
    👉 Thực hành online tại https://metabase.duckdata.dev 🎉

    Kết nối với Vịt:
    👉 Facebook: https://facebook.com/duckdatavn
    👉 Group: https://facebook.com/groups/duckdata

    Mời Vịt 1 tách cà phê ☕☕
    💰 Momo: https://nhantien.momo.vn/duckdata
    💰 VPBank: 4444555667 (Che Duc)
    💰 ACB: 13174397

    Credits:
    👉 Logo: Icons made by Freepik freepik.com from Flaticon flaticon.com
    👉 Slides: The presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik
    👉 Song: Ikson – Paradise (Vlog No Copyright Music)
    Music promoted by Vlog No Copyright Music.
    Video Link: https://youtu.be/glMhD3EU46k

    VitLamData SQL Query NonIT Data Analytics Metabase HocSQL HuongDan Date Time Timestamp

Chuyển đổi ngày giờ của SQL Server sang định dạng ngày ngắn hơn

  • Tác giả: vi.moms4more.org
  • Đánh giá: 3 ⭐ ( 7552 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tôi có một cột ngày giờ trong SQL Server cung cấp cho tôi dữ liệu như thế này 27/10/2010 12:57:49 chiều và tôi muốn truy vấn cột này nhưng chỉ có SQL Server trả về ngày tháng và năm – ví dụ: 2010 10 27 hoặc

Ngày và giờ trong SQL Server: DATEADD ()

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 5342 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bây giờ chúng ta đang ở phần đầu của loạt bài dài kỳ về ngày và giờ trong SQL Server và Azure SQL Database. Tuần này chúng ta nhìn vào một trong những chức năng T-SQL yêu thích của tôi khi…

Chuyển đổi ngày giờ của SQL Server sang định dạng ngày ngắn hơn

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 4080 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Hãy xem CONVERT . Tham số thứ 3 là kiểu ngày giờ bạn muốn chuyển đổi…

Tất tần tật về xử lý ngày tháng (DATE

  • Tác giả: vncoder.vn
  • Đánh giá: 4 ⭐ ( 8149 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Kiểu dữ liệu ngày tháng (date/time) không giống những kiểu dữ liệu nguyên thuỷ thông thường nên thường gây khó khăn cho các bạn lập trình viên nhất là khi thao tác với các câu lệnh mysql, trong bài viết này mình sẽ tổng hợp và hướng dẫn các bạn làm việc với kiểu date/time trong mysql

Hàm xử lý DATE/TIME trong SQL – Phần 1

  • Tác giả: quantrimang.com
  • Đánh giá: 4 ⭐ ( 6787 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ở bài viết này, Quantrimang xin liệt kê tất cả các hàm quan trọng dùng để xử lý Date/Time trong SQL.

Sử dụng kiểu dữ liệu Mở rộng Ngày/Giờ

  • Tác giả: support.microsoft.com
  • Đánh giá: 4 ⭐ ( 9385 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bản đồ Ngày/Giờ Mở rộng chỉ SQL Server kiểu dữ liệu ngày giờ 2, có độ chính xác và phạm vi ngày lớn hơn.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Cách sử dụng Split trong Python - làm thế nào để sử dụng tách