none
Montar data no sql server assim como se faz no oracle RRS feed

  • Pergunta

  • Boa tarde!

    Pessoal,

    Estou montando uma consulta sql onde eu preciso comparar datas. Para tanto, eu preciso montar essas datas.

    No oracle eu consigo fazer utilizando TO_DATE. Porém, no sql server não tenho idéia do que utilizar. A consulta que estou tentando montar é bem simples, segue abaixo:

    Select *

    from FUNCIONARIOS

    where to_date(DATADEMISSAO, 'dd/mm/yyyy') >= to_date('01' || '/' || MES || '/' || ANO, 'dd/mm/yyyy')

     

    Alguém pode ajudar ?

    sexta-feira, 6 de janeiro de 2012 18:00

Respostas

Todas as Respostas

  • Ricardo

    no SQL vc deve usar o convert

    no caso vc tem dois campos ANO e MES estes caras sao alguma variável? no exemplo abaixo assumir que era uma variável por isto tem o @

    Select * from FUNCIONARIOS
    where convert(date,DATADEMISSAO,103) >= convert(date,('01/'+@MES+'/'+@ANO,103)
    
    
    

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    sexta-feira, 6 de janeiro de 2012 18:22
    Moderador
  • Boa Tarde,

    Você não deve usar essa construção nem no ORACLE, nem no SQL Server e nem em nenhum banco de dados. Colocar esse tipo de construção em cláusula WHERE é pedir para ter um TABLE SCAN ou um Index Scan. Sugiro o seguinte:

    DECLARE @Ano INT
    DECLARE @Mes INT

    SET @Ano = 2011
    SET @Mes = 1

    DECLARE @Data DATETIME
    SET @Data = (CAST(((@Ano * 100) + @Mes) As CHAR(6)) + '01')

    SELECT * FROM FUNCIONARIOS
    WHERE DATADEMISSAO >= @Data And <= DATEADD(D,1,@Data)

    Ou

    DECLARE @Data DATE
    SET @Data = '20110101'

    SELECT * FROM FUNCIONARIOS
    WHERE DATADEMISSAO >= @Data And <= DATEADD(D,1,@Data)

    Jamais use TO_DATE ou o CONVERT em cláusula WHERE. Maiores detalhes em:

    DATEDIFF, CONVERT, SUBSTRING e funções sobre colunas na cláusula WHERE e JOINs
    http://gustavomaiaaguiar.wordpress.com/2011/07/03/datediff-convert-substring-e-funes-sobre-colunas-na-clusula-where-e-joins/

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar sexta-feira, 6 de janeiro de 2012 18:45
    • Marcado como Resposta Harley Araujo quarta-feira, 11 de janeiro de 2012 10:19
    sexta-feira, 6 de janeiro de 2012 18:45