Mencari Selisih Antara 2
Tanggal/DateTime pada SQL
13 Feb
SQL Server menyediakan Fungsi Tanggal untuk memanipulasi data jenis
Datetime dengan menggunakan Operator Aritmatika.Sehingga kita lebih mudah dalam
menghitung dan mencari selisih dari dua tanggal / DateTime. Misalnya kita ingin
mencari berapa selisih antara tanggal ‘02-02-2012‘ dan ‘20-02-2012‘
maka hasilnya adalah ‘18 Hari .’
Nah, di SQL kita dipermudah dengan adanya fungsi tanggal tersebut.Adapun
query yang digunakan untuk mencari selisih dari 2 datetime tersebut ialah DateDiff.
DateDiff berfungsi untuk mencari selisih dua buah datetime.DateDiff bukan hanya
digunakan untuk mencari selisih Hari tetapi juga bisa mencari selisih Bulan,dan
Tahun.
Sintaks : DateDiff ( DatePart, Date1, Date2)
DatePart yaitu Interval DateTime yang kita
ingin cari, misalnya Date, Month, Year
Pembahasan :
create table Transaksi (
Nama varchar (15), CheckIn datetime,
CheckOut datetime
)
insert into Transaksi values
(‘Budi’,’11/10/11′,’11/12/11′)
insert into Transaksi values (‘Rina’,’10/12/11′,’10/20/11′)
insert into Transaksi values (‘Danu’,’12/25/11′,’01/03/12′)
insert into Transaksi values (‘Satrya’,’01/10/11′,’01/15/11′)
insert into Transaksi values (‘Erni’,’02/05/11′,’02/08/11′)
insert into Transaksi values (‘Rina’,’10/12/11′,’10/20/11′)
insert into Transaksi values (‘Danu’,’12/25/11′,’01/03/12′)
insert into Transaksi values (‘Satrya’,’01/10/11′,’01/15/11′)
insert into Transaksi values (‘Erni’,’02/05/11′,’02/08/11′)
Select * From Transaksi
Maka hasilnya akan seperti dibawah ini :
Lalu, untuk mencari berapa Hari Customer menginap kita gunakan fungsi
DateDiff yang baru saja kita bahas tadi.
Select Customer, CheckIn, CheckOut, DateDiff (Day,CheckIn,CheckOut)
as ‘Total Hari’
from Transaksi
from Transaksi
Maka akan tampil seperti berikut :
Menghitung banyak hari
procedure TForm1.Button1Click(Sender: TObject);
var
date1, date2: TDateTime;
difference: Integer;
begin
date1 := EncodeDate(2006, 01, 15);
date2 := EncodeDate(2000, 01, 01);
difference := trunc(date1) - trunc(date2);
ShowMessage(IntToStr(difference));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
date1, date2: TDateTime;
difference: Integer;
begin
date1 := EncodeDate(2006, 01, 15);
date2 := EncodeDate(2000, 01, 01);
difference := trunc(date1) - trunc(date2);
ShowMessage(IntToStr(difference));
end;
Tanggal terakhir
function
LastDayOfCurrentMonth: TDate;
var
y, m, d: Word;
begin
DecodeDate(now, y, m, d);
m := m + 1;
if m 12 then
begin
y := y + 1;
m := 1;
end;
Result := EncodeDate(y, m, 1) - 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(DateToStr(LastDayOfCurrentMonth));
end;
var
y, m, d: Word;
begin
DecodeDate(now, y, m, d);
m := m + 1;
if m 12 then
begin
y := y + 1;
m := 1;
end;
Result := EncodeDate(y, m, 1) - 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(DateToStr(LastDayOfCurrentMonth));
end;
function
GetDays(ADate: TDate): Extended;
var
FirstOfYear: TDateTime;
begin
FirstOfYear := EncodeDate(StrToInt(FormatDateTime('yyyy', now)) - 1, 12, 31);
Result := ADate - FirstOfYear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := 'Today is the ' + FloatToStr(GetDays(Date)) + '. day of the year';
end;
var
FirstOfYear: TDateTime;
begin
FirstOfYear := EncodeDate(StrToInt(FormatDateTime('yyyy', now)) - 1, 12, 31);
Result := ADate - FirstOfYear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := 'Today is the ' + FloatToStr(GetDays(Date)) + '. day of the year';
end;
function
CalculateAge(Birthday, CurrentDate: TDate): Integer;
var
Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word;
begin
DecodeDate(Birthday, Year, Month, Day);
DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then
begin
Result := 0;
end
else
begin
Result := CurrentYear - Year;
if (Month > CurrentMonth) then
Dec(Result)
else
begin
if Month = CurrentMonth then
if (Day > CurrentDay) then
Dec(Result);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := Format('Your age is %d', [CalculateAge(StrToDate('01.03.1953'), Date)]);
end;
var
Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word;
begin
DecodeDate(Birthday, Year, Month, Day);
DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then
begin
Result := 0;
end
else
begin
Result := CurrentYear - Year;
if (Month > CurrentMonth) then
Dec(Result)
else
begin
if Month = CurrentMonth then
if (Day > CurrentDay) then
Dec(Result);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := Format('Your age is %d', [CalculateAge(StrToDate('01.03.1953'), Date)]);
end;
No comments:
Post a Comment