Chuyển đến nội dung chính

HÀM SQL FORMAT()

FORMAT() là một trong những hàm được dùng phổ biến nhất trong SQL. Tìm hiểu các ứng dụng chính của nó trong hướng dẫn này.
· 3 phút đọc

Khám phá cùng AI

Kết quả truy vấn từ cơ sở dữ liệu hiếm khi sẵn sàng để đưa vào báo cáo. Giá thường trả về dưới dạng 1234.5 thay vì $1,234.50. Ngày tháng hiển thị như 2023-02-01 04:05:06 khi bạn muốn định dạng dễ đọc hơn. 

Hàm FORMAT() của SQL có thể hữu ích. Nó hoạt động bằng cách chuyển số và ngày giờ thành văn bản đã định dạng và có hỗ trợ khá ổn cho các đơn vị tiền tệ khác nhau hoặc một số mẫu tùy chỉnh.

Hướng dẫn này sẽ giới thiệu cú pháp và bốn trường hợp sử dụng phổ biến.

FORMAT() là gì?

FORMAT() chuyển số hoặc giá trị ngày giờ thành văn bản, với các quy tắc hiển thị cụ thể.

Khi nào nên dùng FORMAT() trong SQL

FORMAT() hữu dụng khi cần hiển thị ngày tháng, tiền tệ và giá trị số theo một định dạng cụ thể. 

Cú pháp SQL FORMAT()

FORMAT(value, format[, culture])

Tham số

Là gì?

Value

Tham số bắt buộc, tham chiếu đến cột cần định dạng 

Format

Tham số bắt buộc, chỉ định mẫu định dạng của giá trị. Chuỗi này nên là một .NET format string. Chúng tôi sẽ minh họa các định dạng cho phép trong ví dụ bên dưới

Culture

Tham số tùy chọn, chỉ định định dạng ngày/giờ theo ngôn ngữ/vùng.

Ví dụ về FORMAT()

Ví dụ 1: Định dạng biến số

SELECT
   FORMAT(0112223333, ‘##-###-####') -- replace format with what is shown in the table below.
 

phone_number

0

11-222-3333

Ví dụ 2: Định dạng datetime

Chúng ta có thể định dạng một biến kiểu datetime theo nhiều định dạng khác nhau.

DECLARE @d DATETIME = CAST('2023-02-01 04:05:06' AS DATETIME);  

SELECT
   FORMAT(@d, format) -- replace format with what is shown in the table below.

Format

Query

Ví dụ ngày đã định dạng cho 1 February 2023 04:05:06 AM

d

FORMAT(@d, ‘d')

2/1/2023

D

FORMAT(@d, D)

Wednesday, February 1, 2023

f

FORMAT(@d, ‘f')

Wednesday, February 1, 2023 4:05 AM

F

FORMAT(@d, ‘F')

Wednesday, February 1, 2023 4:05:06 AM

g

FORMAT(@d, ‘g')

10/8/2022 6:01 AM

G

FORMAT(@d, ‘G')

10/8/2022 6:01:06 AM

O

FORMAT(@d, ‘O')

2022-10-08T06:01:06.117Z

r

FORMAT(@d, ‘r')

Wed, 01 Feb 2023 04:05:06 GMT

R

FORMAT(@d, ‘R')

Wed, 01 Feb 2023 04:05:06 GMT

s

FORMAT(@d, ‘s')

2023-02-01T04:05:06

u

FORMAT(@d, ‘u')

2023-02-01 04:05:06Z

U

FORMAT(@d, ‘U')

Wednesday, February 1, 2023 4:05:06 AM

t

FORMAT(@d, ‘t')

4:05 AM

T

FORMAT(@d, ‘T')

4:05:06 AM

Y

FORMAT(@d, ‘Y')

February 2023

MM_dd_yyyy

FORMAT(@d, ‘MM_dd_yyyy')

02_01_2023

MMM-dd-yy

FORMAT(@d,'MMM-dd-yy')

Feb 01 23

yyyy-dd-MM

FORMAT(@d,'yyyy-dd-MM')

2023-01-02

yyyy-dd-MM hh.mm

FORMAT(@d,'yyyy-dd-MM hh.mm')

2023-01-02 04.05

yyyy-dd-MM hh.mm.ss

FORMAT(@d,'yyyy-dd-MM hh.mm.ss')

2023-01-02 04.05.06

yyyy-dd-MM hh.mm.ss tt

FORMAT(@d,'yyyy-dd-MM hh.mm.ss tt')

2023-01-02 04.05.06 AM

Ví dụ 3: Định dạng ngày theo ngôn ngữ/vùng

Chúng ta có thể định dạng ngày sang các ngôn ngữ khác nhau với tham số culture. 

DECLARE @d DATE = CAST('2023-02-01' AS DATE);  

SELECT
   FORMAT(@d, format, culture) -- replace format with what is shown in the table below.

Culture

Query

Ví dụ ngày đã định dạng cho 1 February 2023 

US English (en-US)

FORMAT(@d, 'd', 'en-US') 

2/1/2023

FORMAT(@d, 'f', 'en-US') 

Wednesday, February 1, 2023 12:00 AM

Great Britain English (en-gb)

FORMAT(@d, 'd', 'en-gb')

01/02/2023

FORMAT(@d, 'f', 'en-gb')

01 February 2023 00:00

German (de-de)

FORMAT(@d, 'd', 'de-de') 

01.02.2023

FORMAT(@d, 'f', 'de-de') 

Mittwoch, 1. Februar 2023 00:00

Chinese (zh-cn)

FORMAT(@d, 'd', 'zh-cn')

2023/2/1

FORMAT(@d, 'f', 'zh-cn')

2023年2月1日 0:00

Indian (hi-in)

FORMAT(@d, 'd', ‘hi-in')

01-02-0203

FORMAT(@d, 'f', ‘hi-in')

01 फरवरी 2023 00:00

Russian (ru-ru)

FORMAT(@d, 'd', ru-ru') 

01-02-2023

FORMAT(@d, 'f', ru-ru') 

1 февраля 2023 г. 0:00

Spain (gl-es)

FORMAT(@d, 'd', 'gl-es')

01/02/2023

FORMAT(@d, 'f', 'gl-es')

mércores 01 febreiro 2023 00:00

Ví dụ 4: Định dạng tiền tệ

Chúng ta cũng có thể dễ dàng định dạng giá trị số thành tiền tệ.

SELECT
   FORMAT(amount, 'c', culture) -- replace format with what is shown in the table below.

Culture

Query

Ví dụ tiền tệ đã định dạng

US English (en-US)

SELECT 

   FORMAT(5.5, 'c', 'en-US') 

$5.5

Great Britain English (en-gb)

SELECT 

   FORMAT(@d, 'c', 'en-gb')

£5.5

German (de-de)

SELECT 

   FORMAT(@d, 'c', 'de-de') 

5,50 €

Chinese (zh-cn)

SELECT 

   FORMAT(@d, 'c', 'zh-cn')

¥5.50

Indian (hi-in)

SELECT 

   FORMAT(@d, 'c', ‘hi-in')

₹5.50

Russian (ru-ru)

SELECT 

   FORMAT(@d, 'c', ru-ru') 

5,50 ₽

Spain (gl-es)

SELECT 

   FORMAT(@d, 'c', 'gl-es')

€5,50

Yêu cầu kỹ thuật

FORMAT() hoạt động trong SQL Server (bắt đầu từ 2012), Azure SQL Database.  FORMAT() cũng hoạt động trong PostgreSQL, nhưng có hành vi khác. Bạn có thể tìm hiểu thêm trong khóa học này.

Xem thêm

Tìm hiểu thêm về SQL

Kết luận

FORMAT() đáng để học vì nó biến một điểm bất tiện của SQL thành một cách sửa trong một dòng.

Một lưu ý cần nhớ: đây là cú pháp của SQL Server và Azure SQL. PostgreSQL có hàm FORMAT() riêng, nhưng hành vi khác — vì vậy hãy kiểm tra hệ SQL của bạn trước khi dựa vào các mẫu này.

Chủ đề

Liên quan