none
¿Como poder editar campo date de sql server al formato dia,mes y año cuando actualmente es año mes dia? RRS feed

  • Pregunta

  • Buenas Noches

    Una consulta lo que pasa es que trato de insertar desde visual studio a sql server campo fecha y depura error 

    ejemplo:

    Insertar 17/09/2018 a tabla compra

    pero sale error lo que pasa es que en sql el formato es

    año mes dia

    Agradeceria su apoyo

     

    martes, 18 de septiembre de 2018 3:41

Respuestas

  • Hola Royser Castañeda Garrido:

    No es correcta tu opinión sobre la fecha y el format sql.

    Te voy a plantear un par de ejemplos para que lo veas, y además así seguro que llegas a la solución de tu problema.

    Lo primero mira lo que te dice select @@language

    declare @fecha datetime = '17/09/2018'
    select @fecha as [Valor de Variable], cast(@fecha as nvarchar(30)) [Mostrar fecha como caracteres]
    declare @fecha2 datetime = '20180917' /*utilizando variable con standard Ansi YYYYMMDD */
    select @fecha2 as [Valor ANSI], cast(@fecha2 as nvarchar(30)) [Mostrar fecha como caracteres]
    
    SET DATEFORMAT dmy;
    select @fecha as [Valor de Variable], cast(@fecha as nvarchar(30)) [Mostrar fecha como caracteres]
    

    Supongo que la salida de las tres filas, te habrá dado el mismo resultado.

    Ahora vamos a rizar un poco el ejemplo

    set language English
    go
    

    Salida Changed language setting to us_english.

    declare @fecha datetime = '17/09/2018'
    select @fecha as [Valor de Variable], 
    cast(@fecha as nvarchar(30)) [Mostrar fecha como caracteres]


    Salida

    Vamos a hacer lo mismo con el valor en formato "ANSI"

    declare @fecha2 datetime = '20180917' /*utilizando variable con standard Ansi YYYYMMDD */
    select @fecha2 as [Valor ANSI], 
    cast(@fecha2 as nvarchar(30)) [Mostrar fecha como caracteres]

    Salida

    No da error, y  sigue mostrando 17 de septiembre.

    Ahora vamos a volver al formato con la dd/mm/yyyy pero con algo por delante.

    SET DATEFORMAT dmy;
    declare @fecha2 datetime = '20180917' /*utilizando variable con standard Ansi YYYYMMDD */
    select @fecha2 as [Valor ANSI], cast(@fecha2 as nvarchar(30)) [Mostrar fecha como caracteres]
    

    Observarás que la salida es correcta.

    Las fechas en Sql no se guardan con formato. Son nuestras solicitudes las que utilizan el formato.

    Ni tan siquiera se guardan como YYYYMMDD. Como almacena Sql las Fechas

    Ejemplo de como trabajar fechas

    Espero te ayude a ver un poco más claro el panorama.

    Un saludo

    martes, 18 de septiembre de 2018 6:02