SQL Server Indonesia User Groups Community Tipe Data Date dan Time di SQL Server 2008 - drowned in code

SQL Server Indonesia User Groups Community

SQL Server Indonesia User Groups Community
Welcome to SQL Server Indonesia User Groups Community Sign in | Join | Help
in Search

drowned in code

eat, sleep, breath, SQL

Tipe Data Date dan Time di SQL Server 2008

Di SQL Server 2008 terdapat 4 tipe data baru untuk date dan time yaitu date, time, datetime2 dan datetimeoffset.

Date

Seperti namanya, tipe data ini hanya berisi date saja dan tidak menyimpan time seperti datetime. Dalam banyak aplikasi, saya sering menemui kolom yang hanya membutuhkan date saja. Pada SQL 2005 semuanya disimpan dalam kolom yang tipenya datetime atau smalldatetime. Dari sisi storage tipe data date hanya memakan 3 bytes, bandingkan dengan datetime yang menggunakan 8 bytes.

Contoh query untuk membandingkan presisi antara date dan datetime:

declare @currentDateTime as datetime = '2008-08-02 12:00:00'

select @currentDateTime

--hasilnya 2008-08-02 12:00:00.000

 

declare @currentDate as date = '2008-08-02 12:00:00'

select @currentDate

--hasilnya 2008-08-02

 

Time

Time adalah tipe data yang berisi time antara 00:00:00.0000000 dan 23:59:59.9999999 dan memakan storage 5 bytes.

Contoh query untuk membandingkan presisi antara date, smalldatetime dan datetime:

declare @currentDateTime as datetime = '2008-08-02 12:00:00'

select @currentDateTime

--hasilnya 2008-08-02 12:00:00.000

 

declare @currentSmallDateTime as smalldatetime = '2008-08-02 12:00:00'

select @currentSmallDateTime

--hasilnya 2008-08-02 12:00:00

 

declare @currentTime as time = '2008-08-02 12:00:00'

select @currentTime

--hasilnya 12:00:00.0000000

 

Datetime2

Datetime2 adalah tipe data yang dapat kita anggap sebagai ekstensi datetime yang memiliki range tanggal dan presisi yang lebih besar dibandingkan datetime. Range tanggal datetime2 adalah antara 1 januari 1 hingga 31 desember 9999 (bandingkan dengan datetime yang range tanggal nya antara 1 januari 1753 dan 31 desember 9999). Sedangkan untuk ukuran presisi, datetime 2 memiliki presisi hingga 7 digit sementara datetime 3 digit. Asyiknya, dengan presisi yang lebih akurat dibandingkan dengan datetime, datetime2 menghabiskan storage maksimal yang sama dengan datetime yaitu 8 bytes.

Contoh query untuk membandingkan presisi antara datetime dan datetime2:

declare @currentDateTime as datetime = '2008-08-02 12:00:00'

select @currentDateTime

--hasilnya 2008-08-02 12:00:00.000

 

declare @currentDateTime2 as datetime2(7) = '2008-08-02 12:00:00'

select @currentDateTime2

--hasilnya 2008-08-02 12:00:00.0000000

 

Datetimeoffset

Ini nih tipe data baru di SQL Server 2008 yang saya rasa sangat berguna sekali apabila kita men-develop aplikasi yang digunakan di tempat yang berbeda zona waktunya. Datetimeoffset adalah tipe data seperti datetime2 dan memiliki zona waktu. Bayangkan apabila kita memiliki aplikasi yang digunakan di tiga cabang yang terdapat di bandung(WIB), makasar (WITA), dan jayapura (WIT). Bukankah akan membantu dan menyenangkan apabila pada saat aplikasi menampilkan data yang berhubungan dengan waktu, waktu yang ditampilkan sesuai dengan zona waktu nya masing-masing?

Contoh query untuk membandingkan waktu antara WIB, WITA dan WIT:

declare @currentDateTime as datetimeoffset = '2008-09-02 12:00:00 +07:00'

select @currentDateTime as WIB

--hasilnya 2008-09-02 12:00:00.0000000 +07:00

 

select SWITCHOFFSET(@currentDateTime,'+08:00') as WITA

--hasilnya 2008-09-02 13:00:00.0000000 +08:00

 

select SWITCHOFFSET(@currentDateTime,'+09:00') as WIT

--hasilnya 2008-09-02 14:00:00.0000000 +09:00

Comments

No Comments
Powered by Community Server (Commercial Edition), by Telligent Systems