Định dạng ngày cho báo cáo

Phân tích chuỗi thời gian trong SQL Server

Maham Faisal Khan

Senior Data Science Content Developer

Các hàm định dạng

CAST()

CONVERT()

FORMAT()

Phân tích chuỗi thời gian trong SQL Server

Hàm CAST()

  • Hỗ trợ ít nhất từ SQL Server 2000
  • Chuyển đổi kiểu dữ liệu, gồm cả kiểu ngày
  • Không kiểm soát định dạng khi đổi ngày sang chuỗi
  • Chuẩn ANSI SQL, hầu hết CSDL quan hệ/phi quan hệ đều có
Phân tích chuỗi thời gian trong SQL Server

Dùng hàm CAST()

DECLARE
    @SomeDate DATETIME2(3) = '1991-06-04 08:00:09',
    @SomeString NVARCHAR(30) = '1991-06-04 08:00:09',
    @OldDateTime DATETIME = '1991-06-04 08:00:09';
SELECT
    CAST(@SomeDate AS NVARCHAR(30)) AS DateToString,
    CAST(@SomeString AS DATETIME2(3)) AS StringToDate,
    CAST(@OldDateTime AS NVARCHAR(30)) AS OldDateToString;
DateToString StringToDate OldDateToString
1991-06-04 08:00:09.000 1991-06-04 08:00:09.000 Jun 4 1991 8:00AM
Phân tích chuỗi thời gian trong SQL Server

Hàm CONVERT()

  • Hỗ trợ ít nhất từ SQL Server 2000
  • Hữu ích để đổi kiểu dữ liệu, gồm cả kiểu ngày
  • Có kiểm soát định dạng khi đổi ngày sang chuỗi bằng tham số style
  • Chỉ có trong T-SQL
Phân tích chuỗi thời gian trong SQL Server

Dùng hàm CONVERT()

DECLARE
    @SomeDate DATETIME2(3) = '1793-02-21 11:13:19.033';
SELECT
    CONVERT(NVARCHAR(30), @SomeDate, 0) AS DefaultForm,
    CONVERT(NVARCHAR(30), @SomeDate, 1) AS US_mdy,
    CONVERT(NVARCHAR(30), @SomeDate, 101) AS US_mdyyyy,
    CONVERT(NVARCHAR(30), @SomeDate, 120) AS ODBC_sec;
GO
DefaultForm US_mdy US_mdyyyy ODBC_sec
Feb 21 1793 11:13 AM 02/21/93 02/21/1793 1793-02-21 11:13:19
Phân tích chuỗi thời gian trong SQL Server

Các kiểu CONVERT() mẫu

Mã kiểu

  • 1 / 101
  • 3 / 103
  • 4 / 104
  • 11 / 111
  • 12 / 112
  • 20 / 120
  • 126
  • 127

Định dạng

  • Hoa Kỳ m/d/y
  • Anh/Pháp d/m/y
  • Đức d.m.y
  • Nhật y/m/d
  • Chuẩn ISO yyyymmdd
  • Chuẩn ODBC (121 cho mili-giây)
  • ISO8601 yyyy-mm-dd hh:mi:ss.mmm
  • yyyy-mm-ddThh:mi:ss.mmmZ
Phân tích chuỗi thời gian trong SQL Server

Hàm FORMAT()

  • Hỗ trợ từ SQL Server 2012
  • Hữu ích để định dạng ngày/số cho báo cáo
  • Linh hoạt hơn CAST() hoặc CONVERT() khi định dạng ngày thành chuỗi
  • Chỉ có trong T-SQL
  • Dùng .NET để chuyển đổi
  • Có thể chậm khi xử lý nhiều hàng
Phân tích chuỗi thời gian trong SQL Server

Dùng hàm FORMAT()

DECLARE
    @SomeDate DATETIME2(3) = '1793-02-21 11:13:19.033';
SELECT
    FORMAT(@SomeDate, 'd', 'en-US') AS US_d,
    FORMAT(@SomeDate, 'd', 'de-DE') AS DE_d,
    FORMAT(@SomeDate, 'D', 'de-DE') AS DE_D,
    FORMAT(@SomeDate, 'yyyy-MM-dd') AS yMd;
US_d DE_d DE_D yMd
2/21/1793 21.02.1793 Donnerstag, 21. February 1793 1793-02-21
Phân tích chuỗi thời gian trong SQL Server

Hàm FORMAT() có thể chậm hơn CAST() hoặc CONVERT() với tập dữ liệu lớn.

Phân tích chuỗi thời gian trong SQL Server

Ayo berlatih!

Phân tích chuỗi thời gian trong SQL Server

Preparing Video For Download...