none
Convertir formato de fecha varchar SQL SERVER RRS feed

  • Pregunta

  • Hola!

    Cuando uso la siguiente sentencia :select convert(char(10),'2018-04-18 12:00:00 AM',103)

    Me bota lo siguiente : '2018-04-18'

    en vez de .'18/04/2018'

    Saben a que se debe eso ?


    jueves, 19 de abril de 2018 23:07

Respuestas

Todas las respuestas

  • select convert(char(10),convert(datetime,'2018-04-18 12:00:00 AM'),103)
    jueves, 19 de abril de 2018 23:25
  • Hola, deberás de intentar con esto amigo

    Te anexo el codigo

     SELECT CONVERT(CHAR(10),'2018-04-18 12:00:00 AM',103)
     SELECT REPLACE('2018-04-18','-','/')
     SELECT (SELECT VALOR FROM [DBO].[SPLIT]((REPLACE('2018-04-18','-','/')),'/') WHERE INDICE = 3)
    	+'/'+
    (SELECT VALOR FROM [DBO].[SPLIT]((REPLACE('2018-04-18','-','/')),'/') WHERE INDICE = 2)
    	+'/'+
    (SELECT VALOR FROM [DBO].[SPLIT]((REPLACE('2018-04-18','-','/')),'/') WHERE INDICE = 1)

    Te anexo la función de Split 

    ALTER FUNCTION [dbo].[Split]
    (
        @RowData NVARCHAR(MAX) ,
        @SplitOn NVARCHAR(5)
    )
    RETURNS @ReturnValue TABLE (Indice INT, Valor NVARCHAR(MAX) ) AS
        BEGIN
            DECLARE @Counter INT
            SET @Counter = 1
            WHILE ( CHARINDEX(@SplitOn, @RowData) > 0 )
            BEGIN
                INSERT  INTO @ReturnValue (Indice, Valor )
                    SELECT  Indice = @Counter, Valor = LTRIM(RTRIM(SUBSTRING(@RowData, 1, CHARINDEX(@SplitOn, @RowData) - 1)))
                SET @RowData = SUBSTRING(@RowData, CHARINDEX(@SplitOn, @RowData) + 1, LEN(@RowData))
                SET @Counter = @Counter + 1
            END
            INSERT INTO @ReturnValue ( Indice, Valor )
            SELECT Indice = @Counter , Valor = LTRIM(RTRIM(@RowData))
    
            RETURN
        END;

    Te anexo imagen del result

    jueves, 19 de abril de 2018 23:30
  • Al correr esa sentencia me arroja un error.

    

    Puede ser algo referente a la configuración horaria ?


    viernes, 20 de abril de 2018 13:44
  • Hola, prueba la siguiente linea: 
    select convert(varchar(10),CAST(REPLACE('2018-04-18 12:00:00 AM','-','') AS DATETIME),103)
    Saludos.
    viernes, 20 de abril de 2018 14:16
  • Si es probable, intenta poner la sentencia antes de la ejecucion del select de la fecha la sentencia set dateformat

    SET DATEFORMAT YMD;
    
    select convert(char(10),convert(datetime,'2018-04-18 12:00:00 AM'),103)

    De esa manera estas obligando a que el resultado lo tome en el formato esperado que es año mes dia

    Saludos


    Carlos Aldi


    • Editado Carlos Aldi viernes, 20 de abril de 2018 14:18
    viernes, 20 de abril de 2018 14:18
  • Hola, puedes utilizar lo sgte. : Select Format(Convert(Date,'2018-04-18 12:00:00 AM'),'MM/dd/yyyy')
    miércoles, 24 de julio de 2019 21:44