Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 10825|Risposta: 0

[Fonte] Enunciato SQL pratico: stima della data

[Copiato link]
Pubblicato su 26/11/2014 15:53:01 | | |

DICHIARA @dt data
SET @dt=GETDATE()

DECLARE @number int
SET @number=3

--1. Specificare la data del primo o dell'ultimo giorno dell'anno
--A. Il primo giorno dell'anno
SELECT Co nVERT(char(5),@dt,120)+ '1-1'

--B. L'ultimo giorno dell'anno
SELECT Co nVERT(char(5),@dt,120)+ '12-31'


--2. Il primo o l'ultimo giorno del trimestre in cui si trova la data specificata
--A. Primo giorno del trimestre
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Mo nth,
DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2,
@dt),
120)+ '1 ')

--B. Ultimo giorno del trimestre (sentenza CASE)
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Mo nth,
DATEPART(Quarter,@dt)*3-Month nth(@dt),
@dt),
120)
+CASO QUANDO DATEPART(Quarter,@dt) in(1,4)
POI '31 'ELSE '30' FINE)

--C. Ultimo giorno del trimestre (algoritmo di spinta diretta)
SELEZIONA LA DATA AGGIUNGI(Giorno,-1,
Co nVERT(char(8),
DATEADD(Mo nth,
1+DATEPART(Quarter,@dt)*3-Mo nth(@dt),
@dt),
120)+ '1 ')


--3. Il primo o l'ultimo giorno del mese in cui si trova la data specificata
--A. Il primo giorno del mese
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1 ')

--B. L'ultimo giorno del mese
SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ')

--C. Ultimo giorno del mese (facile da usare, metodo sbagliato)
SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt))


--4. Qualsiasi giorno della settimana in cui si trova la data specificata
SELEZIONA DATEADD(Giorno,@number-DATAPARTE(Giorno feriale,@dt),@dt)


--5. Qualsiasi giorno della settimana in cui si trova la data specificata
--Un.  Domenica come primo giorno della settimana
SELEZIONA DATEADD(Giorno,@number-(DATAPART(Giorno feriale,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Il lunedì è il primo giorno della settimana
SELEZIONA DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)






Precedente:Problema di utilizzo dell'indice quando SQLSERVER gestisce come '%keyword%'
Prossimo:Nuove funzionalità dell'ORACLE 11g - Permette alle serrature DDL di aspettare le serrature DML
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com