|
ILMOITA @dt päivämääräaika ASETA @dt=GETDATE() DEKLARARE @number älykkyys SETTI @number=3 --1. Määritä vuoden ensimmäisen tai viimeisen päivän päivämäärä --A. Vuoden ensimmäinen päivä VALITSE Co nVERT(char(5),@dt,120)+ '1-1' --B. Vuoden viimeinen päivä SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Neljänneksen ensimmäinen tai viimeinen päivä, jolloin mainittu päivämäärä sijaitsee --A. Neljänneksen ensimmäinen päivä SELECT Co nVERT(datetime, Co nVERT(hahmo(8), DATEADD(Mo nth, DATEPART(neljännes,@dt)*3-kuukautta nth(@dt)-2, @dt), 120)+ '1 ')
--B. Neljänneksen viimeinen päivä (TAPAUSRATKAISU) SELECT Co nVERT(datetime, Co nVERT(hahmo(8), DATEADD(Mo nth, DATEPART(neljännes,@dt)*3 kuukautta nth(@dt), @dt), 120) +CASE WHEN DATEPART (Quarter,@dt) in(1,4) SITTEN '31 'ELSE '30' LOPPU) --C. Neljänneksen viimeinen päivä (suora työntöalgoritmi) VALITSE DATEADD(Päivä, -1, Co nVERT(hahmo(8), DATEADD(Mo nth, 1+DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. Kuukauden ensimmäinen tai viimeinen päivä, jolloin mainittu päivämäärä sijaitsee --A. Kuukauden ensimmäinen päivä VALITSE Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')
--B. Kuukauden viimeinen päivä VALITSE DATEADD(Päivä,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1') --C. Kuukauden viimeinen päivä (helppokäyttöinen väärä menetelmä) VALITSE DATEADD(Mo nth,1,DATEADD(Päivä,-DAY(@dt),@dt)) --4. Mikä tahansa viikonpäivä, jolloin määritelty päivämäärä sijaitsee VALITSE DATEADD(Päivä,@number-DATEPART(Arkipäivä,@dt),@dt)
--5. Mikä tahansa viikonpäivä, jolloin mainittu päivämäärä sijaitsee --A. Sunnuntai on viikon ensimmäinen päivä VALITSE DATEADD(Päivä,@number-(DATEPART(Arkipäivä,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Maanantai on viikon ensimmäinen päivä VALITSE DATEADD(Päivä,@number-(DATEPART(Arkipäivä,@dt)+@@DATEFIRST-2)%7-1,@dt)
|