Dúvidas com DATEPART() e GETDATE()
21/04/2007
0
-----------------------------------------------------------------------------------
SELECT .........
FROM SD2010
WHERE .....
AND D2_EMISSAO BETWEEN [b:d69f863f8a][u:d69f863f8a]´20070401´[/u:d69f863f8a][/b:d69f863f8a] AND GETDATE()
-----------------------------------------------------------------------------------
bom acho que é isso, desde já agradeço a todo mundo que poder ajudar falows. :!:
Talvane
Curtir tópico
+ 0Posts
26/04/2007
Wagnerbianchi
Gostei muito dessa sua dúvida...algo intrigante.
Bom, o máximo que consegui me aproximar foi isso:
SELECT CONVERT(CHAR(4), YEAR(GETDATE())) + CONVERT(CHAR(2), MONTH(GETDATE())) + CONVERT(CHAR(2), DAY(GETDATE()))
...são mais de 00:00h e amanhã tem trabalho.
Voltarei aqui paa continuar essa discussão!
Talvez eu faça uma função e usamos esta para facilitar as coisas!
Um abraço!
Gostei + 0
26/04/2007
Talvane
Gostei + 0
02/05/2007
Marconogueira
Vc já deve ter a resposta, mas se ainda não tiver, tá aí.
Se quiser tenho funções para o último dia do mês também,
independente se for ano bissexto.
Falow.
------------------------------------------------------------------
DECLARE @dt_inicial SMALLDATETIME
SET @dt_inicial = CONVERT(SMALLDATETIME, CONVERT(CHAR(4),DATEPART(yyyy, GETDATE())) + ´-´ + CONVERT(CHAR(2),DATEPART(mm, GETDATE())) + ´-´ + ´01´)
SELECT .........
FROM SD2010
WHERE .....
AND D2_EMISSAO BETWEEN @dt_inicial AND GETDATE()
Gostei + 0
03/05/2007
Talvane
Gostei + 0
11/05/2007
Psergio.p
seria isso:
SELECT CONVERT(VARCHAR(4),YEAR(GETDATE())) +
CASE WHEN MONTH(GETDATE()) < 10 THEN ´0´ + CONVERT(VARCHAR(1),MONTH(GETDATE()))
ELSE CONVERT(VARCHAR(2),MONTH(GETDATE())) END + ´01´
Gostei + 0
18/05/2007
Emerson Nascimento
basta você subtrair, da data atual, o dia -1.
por exemplo: supondo que hoje seja dia 23/04/2007. como encotrar o dia primeiro do 04? basta subtrair da data atual o dia - 1 (23 - 1)
então seria
[b:5123b29c94]23[/b:5123b29c94]/04/2007 - ([b:5123b29c94]23[/b:5123b29c94] -1) =
23/04/2007 - 22 =
01/04/2007
a instrução deverá ser:
SELECT .........
FROM SD2010
WHERE .....
AND D2_EMISSAO BETWEEN (GETDATE() - (DAY(GETDATE())-1)) AND GETDATE()
Gostei + 0
18/05/2007
Psergio.p
Gostei + 0
18/05/2007
Emerson Nascimento
psergio.p, creio que o campo D2_EMISSAO é um campo do tipo DATETIME, sim.
outra coisa: pelo que eu ENTENDI, vendo a instrução passada acima, ele quer saber sobre o movimento do ínicio do mês até o dia atual, ou seja, o movimento do mês atual.
pode ser da forma que eu havia passado (que se assemelha à instrução passada na questão):
[b:9cf85071ee]SELECT .........
FROM SD2010
WHERE .....
AND D2_EMISSAO BETWEEN (GETDATE() - (DAY(GETDATE())-1)) AND GETDATE()[/b:9cf85071ee]
a instrução acima irá trazer os registros onde D2_EMISSAO esteja entre o 1º dia do mês e o dia atual.
ou desta outra forma:
[b:9cf85071ee]Select .........
From SD2010
Where .....
and convert(varchar(6), D2_EMISSAO, 112) = convert(varchar(6), GetDate(), 112)[/b:9cf85071ee]
a instrução acima irá trazer os registros onde mês e ano de D2_EMISSAO seja igual a mês e ano da data atual.
simples: hoje é dia 18/05/2007. como você faria pra montar a data 01/05/2007? fazendo a conta...
assim pode obter BETWEEN ´200705[b:9cf85071ee]01[/b:9cf85071ee]´ AND ´20070518´
Gostei + 0
12/08/2007
Marcelo.bastos
você pode utilizar a seguinte sintaxe para obter o primeiro dia de qualquer mês posterior ou anterior que acredito ser bastante interessante.
SELECT DATEADD(mm, -1, GETDATE()) - DAY(GETDATE()) + 1
O parâmetro ´-1´ é a quantidade de meses que quero retornar e o ´+1´ no final é para obter o primeiro dia do mês. Caso você queira obter o último dia do mês está sintaxe também pode ser utilizada apenas retirando o ´+1´ que está no final dela.
Gostei + 0
12/08/2007
Marcelo.bastos
Marcelo Bastos
Gostei + 0
12/08/2007
Psergio.p
Experiência própria.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)