Tải bản đầy đủ (.pdf) (5 trang)

Cải tiến trong lệnh T-SQL của SQL Server 2008- P8 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (300.66 KB, 5 trang )

Kiểu dữ liệu Date và Time mới

Trường hợp ứng dụng thực
Không ai có thể phủ nhận tầm quan trọng của một
kiểu dữ liệu chỉ có thể lưu trữ ngày tháng mà không
có thời gian hoặc thời gian mà không có ngày tháng.
Ví dụ, để lưu trữ ngày sinh của một nhân viên chúng
ta sẽ chỉ cần lưu trữ ngày, còn thời gian là không cần
thiết. Tương tự, để lưu trữ những thông tin theo từng
giai đoạn trong ngày như từ 00:01 tới 08:00 (giai
đoạn A), từ 08:01 đến 16:00 (giai đoạn B), và từ
16:01 đến 24:00 (giai đoạn C) thì chúng ta chỉ cần
lưu trữ thời gian còn ngày không liên quan trong
trường hợp này. Cho tới phiên bản SQL Server 2005
chúng ta không có lựa chọn lưu trữ riêng biệt, thay
vào đó phải lựa chọn sử dụng kiểu dữ liệu hoặc
DATETIME hoặc SMALLDATETIME. Việc lưu cả
ngày và giờ không chỉ gây rắc rối khi làm việc mà
còn làm lãng phí vùng lưu trữ. Ví dụ, để lưu trữ ngày
sinh của 100 triệu khách hàng chúng ta sẽ phải sử
dụng khoảng 770MB nếu sử dụng kiểu dữ liệu
DATETIME. Tuy nhiên trong SQL Server 2008 vấn
đề này đã được khắc phục, giờ đây chúng ta có thể
lưu trữ cùng loại thông tin với dung lượng chiếm
dụng ít hơn nhiều (khoảng 290MB trong ví dụ trên,
chỉ lưu trữ ngày) bằng cách chỉ lưu trữ ngày hoặc giờ.
Không chỉ có vậy, những kiểu dữ liệu mới này sẽ có
một vùng rộng hơn, thời gian được chia nhỏ tới đơn
vị nano giây (một phần tỷ giây), và cho phép lưu trữ
khoảng trống múi giờ với dữ liệu đó.


SQL Server 2008 giới thiệu 4 kiểu dữ liệu
DATETIME mới bao gồm:

DATE
Trong các phiên bản SQL Server trước, chúng ta phải
sử dụng kiểu dữ liệu DATETIME hay
SMALLDATETIME cho dù chúng ta chỉ cần lưu trữ
Date. Những kiểu dữ liệu này lưu trữ thời gian như
một thành phần của nó. Sau đó chúng ta cần phải
định dạng dữ liệu kết xuất để chỉ hiện thị thành phần
ngày. SQL Server 2008 giới thiệu kiểu dữ liệu DATE
rất hữu dụng trong việc lưu trữ ngày. Nó hỗ trợ lịch
Gregorian và sử dụng 3 byte để lưu trữ ngày. Vùng
của kiểu dữ liệu DATE từ 01-01-0001 tới 12-31-
9999, trong khi kiểu dữ liệu DATETIME có vùng từ
01-01-1753 tới 31-12-9999 và SMALLDATETIME từ
01-01-1900 tới 06-06-2079.
CREATE TABLE Employee
(
EmpId INT IDENTITY,
Name VARCHAR(100),
DOB DATE, Date of birth column will store
only date and no time part
DOJ DATE DEFAULT GETDATE() Date of
joining will be default, again only date, no time
part
)
GO
Tạo một biến DATE rồi gán một giá trị ngày
DECLARE @DOB DATE =

CONVERT(DATE,'12/05/1982')
INSERT INTO Employee(Name, DOB)
VALUES ('Rocky', @DOB)
GO
SELECT * FROM Employee
GO


TIME
Giống với kiểu dữ liệu Date, trong SQL Server 2008
giới thiệu một kiểu dữ liệu TIME được sử dụng trong
trường hợp chỉ cần lưu trữ thời gian. Vùng dữ liệu
TIME trong khoảng 00:00:00.0000000 tới
23:59:59.9999999. Độ chính xác của kiểu dữ liệu
TIME lên đến 100 nano giây, tuy nhiên chúng ta có
thể giảm giá trị này để tiết kiệm bộ nhớ (khoảng 3
đến 5 byte). Kiểu dữ liệu này không nhận biết được
múi giờ, và nó sử dụng hệ 24 giờ.
CREATE TABLE ShiftMaster
(
ShiftName VARCHAR(100),
StartTime TIME, StartTime without storing
date component
EndTime TIME EndTime without storing date
component

×