Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 10825|Resposta: 0

[Fonte] Instrução SQL prática: estimativa de data

[Copiar link]
Publicado em 26/11/2014 15:53:01 | | |

DECLARE @dt data
SET @dt=GETDATE()

DECLARE @number int
CONJUNTO @number=3

--1. Especifique a data do primeiro ou último dia do ano
--A. O primeiro dia do ano
SELECT Co nVERT(char(5),@dt,120)+ '1-1'

--B. O último dia do ano
SELECT Co nVERT(char(5),@dt,120)+ '12-31'


--2. O primeiro ou último dia do trimestre em que a data especificada está localizada
--A. Primeiro dia do trimestre
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Mo nth,
DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2,
@dt),
120)+ '1 ')

--B. Último dia do trimestre (sentença do caso)
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Mo nth,
DATEPART(Quarter,@dt)*3-Mo nth(@dt),
@dt),
120)
+CASO QUANDO DATAPARTE(Quarter,@dt) em(1,4)
ENTÃO '31 'ELSE '30' FIM)

--C. Último dia do trimestre (algoritmo de empurrar direto)
SELECIONE DATAADD(Dia,-1,
Co nVERT(char(8),
DATEADD(Mo nth,
1+DATEPART(Quarto,@dt)*3-Mo nth(@dt),
@dt),
120)+ '1 ')


--3. O primeiro ou último dia do mês em que a data especificada está localizada
--A. O primeiro dia do mês
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')

--B. O último dia do mês
SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ')

--C. Último dia do mês (fácil de usar método errado)
SELECIONE DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt))


--4. Qualquer dia da semana em que a data especificada esteja localizada
SELECIONE DATEADD(Dia,@number-DATEPART(Dia da semana,@dt),@dt)


--5. Qualquer dia da semana em que a data especificada esteja localizada
--Um.  Domingo como o primeiro dia da semana
SELECIONE DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  Segunda-feira é o primeiro dia da semana
SELECIONE DATEADD(Dia,@number-(DATEPART(Dia da Semana,@dt)+@@DATEFIRST-2)%7-1,@dt)






Anterior:Problema de utilização de índice quando o SQL Servers lida com '%palavra-chave%'
Próximo:Novos Recursos do ORACLE 11g - Permite que bloqueadores DDL aguardem bloqueios DML
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com