none
Erro:The conversion of a varchar data type to a smalldatetime RRS feed

  • Pergunta

  • 	SELECT DATEADD(ss, 64800, DATEADD(d, -1, CAST(CONVERT(varchar(10), GETDATE(), 103) AS smalldatetime)))

    Amigos, se puder ajudar! agradeço

    O filtro acima não faz nada além de, partindo da data atual, subtrai 1 dia, e após adiciona 18 horas (64800 segundos). Por exemplo, para a data atual 27/12/2016 06:00:00: Subtrai 1 dia: 26/12/2016 06:00:00 Formata o resultado para: 26/12/2016 00:00:00 Adiciona 64800 segundos (18hrs): 26/12/2016 18:00:00

    Erro de conversão: The conversion of a varchar data type to a smalldatetime data type resulted in an out-of-range value.



    • Editado Itasouza terça-feira, 27 de dezembro de 2016 16:15
    terça-feira, 27 de dezembro de 2016 16:04

Respostas

  • Tente dessa forma

    SELECT    DATEADD(HOUR,18,DATEADD(DAY,-1,  CONVERT(DATETIME, CONVERT(DATE,GETDATE(),103),103)))

    veja o exemplo se sua data estiver no formato pt-br 

    DECLARE @data VARCHAR(MAX) ='27/12/2016 06:00:00'
    SELECT    DATEADD(HOUR,18,DATEADD(DAY,-1,  CONVERT(DATETIME, CONVERT(DATE,@data,103),103)))


    Wesley Neves


    terça-feira, 27 de dezembro de 2016 16:20
  • Deleted
    terça-feira, 27 de dezembro de 2016 17:17

Todas as Respostas

  • Tente dessa forma

    SELECT    DATEADD(HOUR,18,DATEADD(DAY,-1,  CONVERT(DATETIME, CONVERT(DATE,GETDATE(),103),103)))

    veja o exemplo se sua data estiver no formato pt-br 

    DECLARE @data VARCHAR(MAX) ='27/12/2016 06:00:00'
    SELECT    DATEADD(HOUR,18,DATEADD(DAY,-1,  CONVERT(DATETIME, CONVERT(DATE,@data,103),103)))


    Wesley Neves


    terça-feira, 27 de dezembro de 2016 16:20
  • A Solução seria:

    --teste, data anterior apartir das 18:00 horas 
    SELECT DATEADD(ss, 64800, DATEADD(d, -1, CAST(CONVERT(varchar(10), GETDATE(), 120) AS smalldatetime)))

    Apenas altera para 120 no lugar do 103

    terça-feira, 27 de dezembro de 2016 16:21
  • Deleted
    terça-feira, 27 de dezembro de 2016 17:17