Ir para conteúdo
Fórum Script Brasil
  • 0

Função Year To date


Luiz Henrique Porto

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

tambem queria saber .

YearToDate já vi em java, mas nunca em sql . Dando uma pesquisada Fulvio

Vi este script

CREATE TABLE T

(

d DATETIME NOT NULL PRIMARY KEY

)

-- Sample data

INSERT INTO T (d)

VALUES ('20030801')

INSERT INTO T (d)

VALUES ('20030901')

INSERT INTO T (d)

VALUES ('20030501')

INSERT INTO T (d)

VALUES ('20021201')

-- For current date

SELECT d

FROM T

WHERE (MONTH(CURRENT_TIMESTAMP) >= 8 OR

d >= CAST(YEAR(CURRENT_TIMESTAMP) - 1 AS CHAR(4)) + '0801')

AND

(MONTH(CURRENT_TIMESTAMP) < 8 OR

d >= CAST(YEAR(CURRENT_TIMESTAMP) AS CHAR(4)) + '0801')

ORDER BY d

d

2003-08-01 00:00:00.000

2003-09-01 00:00:00.000

-- For provided date

CREATE FUNCTION YearToDate (@d DATETIME)

RETURNS TABLE

AS

RETURN(

SELECT d

FROM T

WHERE (MONTH(@d) >= 8 OR

(d BETWEEN

CAST(YEAR(@d) - 1 AS CHAR(4)) + '0801' AND @d))

AND

(MONTH(@d) < 8 OR

(d BETWEEN CAST(YEAR(@d) AS CHAR(4)) + '0801' AND @d))

)

SELECT d

FROM YearToDate('20030701')

ORDER BY d

d

2002-12-01 00:00:00.000

2003-05-01 00:00:00.000

Regards,

jag

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Luiz,

Esta função não é "nativa" do sql. É uma implementação.

Li o script: me parece que ela recupera a data mais próxima da pesquisada, desde que a data pesquisada já tenha ultrapassada uma das datas da tabela T. Caso a data seja igual a uma data da tabela T, será listado dois resultados (ela mesma e a mais próxima).

O que não entendi é por que a data '20030701' retorna dois valores.... parece que quando a data está exatamente entre duas datas, ele lista as duas. Mas realizei testes com outras datas e não deu certo... :.(

Quando implemento alguma coisa em sql, tento fazê-la. Alguns exemplos na net são para nortear ou para dar idéias de uma melhor implementação. Nunca peguei códigos prontos e utililizei.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...