23/06/2013

Hàm thông dụng trong SQL Server - Phần 1: Hàm ngày tháng (1)

Loạt bài này giới thiệu các hàm và cách sử dụng các hàm thông dụng trong SQL Server, cũng như ví dụ cụ thể đi kèm để giúp người đọc, đặc biệt là những người mới làm quen với SQL Server tiếp cận dễ dàng. Những hàm này cũng là những hàm thường xuyên sử dụng và chiếm đến 90% số các hàm mà một lập trình viên SQL Server sử dụng trong công việc của mình.
Ở phần một, chúng ta sẽ làm quen với các hàm sau:



1.      GETDATE()
2.      DATEPART()
3.      DATEDIFF()
4.      DATENAME()
5.      DAY()
6.      MONTH()
7.      YEAR()


Hàm ngày tháng trong SQL Server

Hàm ngày tháng trong SQL Server



1.      Hàm GETDATE()
Hàm này không có tham số và trả về ngày tháng hiện tại trên hệ thống như ví dụ sau:\
select GETDATE()

Hàm getdate() trong SQL Server
Hàm Getdate trong SQL Server


2.      Hàm DATEPART()
Hàm này có kiểu trả về là kiểu int và có cấu trúc như sau:

DATEPART ( datepart , date )

Trong đó các tham số:
- date: là ngày truyền vào để lấy các phần tương ứng với tham số datepart như sau.
- datepart: là 1 hoặc 2 chữ cái viết tắt đại diện một phần của tham số date, bao gồm các giá trị:
·         yy, yyyy: năm của date
·          qq, q: quý của date
·         mm, m: tháng của date
·         dy,y: ngày date là ngày thứ mấy của năm
·         dd, d: lấy phần ngày của date
·         wk, ww: date thuộc tuần thứ mấy trong năm
·         dw: date là ngày thứ mấy trong tuần
·         hh: giờ
·         mi,n: phút
·         ss,s: giây
·         ms: mili giây
·         mcs: micro giây
·         ns: nano giây

Ví dụ hàm DATEPART() trong SQL Server:
-- Lấy năm của ngày hiện tại

select datepart(yy,GETDATE()) as Năm

-- lấy ngày của ngày hiện tại

select datepart(DD,GETDATE()) as Ngày

-- Lấy tháng của tháng hiện tại

select datepart(MM ,GETDATE()) as Tháng

-- Lấy thứ của ngày hiện tại

select datepart(DW ,GETDATE()) as Thứ -- kết quả 1 == Chủ nhật

-- Quý thứ mấy của năm

select datepart(QQ,GETDATE()) as Quý -- kết quả 1 == Chủ nhật

-- Câu query sau cho biết ngày hiện tại là ngày thứ mấy trong năm

select datepart(DY,GETDATE()) as [Ngày thứ mấy của năm] -- kết quả 1 == Chủ nhật

-- Ngày hiện tại thuộc tuần thứ mấy của năm

select datepart(WW,GETDATE()) as [Tuần thứ mấy của năm] -- kết quả 1 == Chủ nhật

Hàm datepart() trong SQL Server
Hàm datepart() trong SQL Server


3.      Hàm DATEDIFF() :
Hàm này tính số ngày và thời gian đã qua giữa ngày đầu và ngày cuối được truyền vào. Nó trả về giá trị kiểu Int và có cấu trúc như sau:
DATEDIFF ( datepart , startdate , enddate ) 

Trong đó:
-          datepart: như hàm datepart() ở mục 3.
-          startdate: ngày thứ nhất
-          enddate: ngày thứ hai.
Ví dụ hàm DATEDIFF() trong SQL Server:
-- Mấy tháng nữa thì đến 2/9/2013?

select datediff(MM,GETDATE(), '2013-09-02') as [Số tháng từ nay đến 2-09]

-- Mấy ngày nữa thì đến 2/9/2013?

select datediff(DD,GETDATE(), '2013-09-02') as [Số ngày từ nay đến 2-09]

-- Mấy giờ nữa thì đến 2/9/2013?

select datediff(HH,GETDATE(), '2013-09-02') as [Số giờ từ nay đến 2-09]

-- Mấy tuần nữa thì đến 2/9/2013?

select datediff(WW,GETDATE(), '2013-09-02') as [Số tuần từ nay đến 2-09]

Hàm datediff() trong SQL Server
Hàm datediff trong SQL Server

4.      Hàm DATENAME()
Hàm này trả về giá trị kiểu chuỗi đại diện cho phần ngày được chỉ định trong tham số date được truyền vào. Cấu trúc hàm này như sau:

DATENAME ( datepart , date )

Hàm này gần giống với hàm DATEPART ở trên nhưng khác ở chỗ:
-          Giá trị trả về là kiểu chữ.
-          Với những datepart có thể diễn đạt được bằng chữ thì nó sẽ trả về chuỗi đại diện cho datepart đó, ví dụ: datepart là mm thì giá trị trả về là “June”. Trong khi nếu datepart là yy thì giá trị trả về giống với hàm datepart() ở trên là “2013”.
Ví dụ hàm DATENAME() trong SQL Server:
-- tên tháng hiện tại
select datename(M,getdate()) as [Tên tháng hiện tại]
-- năm hiện tại
select datename(YY,getdate()) as [Tên năm hiện tại]

-- Tên quý hiện tại
select datename(QQ,getdate()) as [Tên năm hiện tại]
Hàm datename trong SQL Server
Hàm Datename trong SQL Server


5.      Hàm DAY()
Hàm này trả ngày của tham số date được truyền vào và có cấu trúc sau:
DAY ( date )

Ví dụ hàm DAY() trong SQL Server:
Hàm day() trong SQL Server
Hàm day() trong SQL Server

6.      Hàm MONTH()
Hàm này trả về tháng của tham số date được truyền vào và có cấu trúc sau:
MONTH ( date )

Ví dụ hàm MONTH() trong SQL Server:
Hàm Month() trong SQL Server
Hàm Month() trong SQL Server
7.      Hàm YEAR()
Hàm này trả về năm của tham số date được truyền vào và có cấu trúc sau:
YEAR ( date )

Ví dụ hàm YEAR() trong SQL Server:
Hàm Year() trong SQL Server