Menjawab pertanyaan di milis sekaligus untuk meramaikan sqlserver-indo.org kita ^_^
Pertanyaan dari hendra.tala.a@gmail.com:
bagaimana caranya untuk mendapatkan bahwa tanggal 14-07-2008 adalah senin ke 2 dalam bulan ini, meskipun 14-07-2008 berada pada minggu ke 3
minta tolong pakar sql
terima kasih
Jawaban :
declare @date datetime,@dayname varchar(10),@datenumber int,@daycount int
set @date='20080714'
set @dayname=(select datename(dw,@date))
set @datenumber=(select datepart(d,@date))
set @daycount=0
while (@datenumber>0)
begin
set @datenumber=@datenumber-7
set @daycount=@daycount+1
end
select case
when @dayname='Monday' then 'Senin'
when @dayname='Tuesday' then 'Selasa'
when @dayname='Wednesday' then 'Rabu'
when @dayname='Thursday' then 'Kamis'
when @dayname='Friday' then 'Jumat'
when @dayname='Saturday' then 'Sabtu'
when @dayname='Sunday' then 'Minggu'
end
+' ke '+cast(@daycount as char)
Quiz: Algoritma di atas sebenarnya sangat sederhana. Tanpa menggunakan looping pun bisa diselesaikan. Kuncinya ada pada angka 7, penjumlahan, pengurangan dan pembagian. Ada yang mau menjawab?
Jawaban Quiz:
DECLARE @Date datetime SET @Date = '2008-02-09'
SELECT datename(dw,@date)+' ke '+cast((DATEPART(day,@Date)-1)/7+1 AS char)