none
Error al copiar de una tabla a otra me cambia el mes por diaaaaa ayuda sql RRS feed

  • Pregunta

  • Tengo un problema que cuando copio registros de una tabla a otra en SQLserver2014 me cambia la fecha por ejemplo 2018-7-8 que es YYYY-MM-DD me lo cambia a 2018-DD-MM que es 2018-8-7 las tablas en el campo fecha están datetime ambas osea todos los campos de como de la otra están iguales y he buscado en la Internet y no aparece nada referente a este problema alguien puede ayudarme por favor 
    sábado, 7 de julio de 2018 19:26

Respuestas

Todas las respuestas

  • Hola:

    SQL server no almacena las fechas en formato YYYY-MM-DD ni en YYYY-DD-MM, es la salida del resultado de las consultas, la que realiza en todo caso la conversión.

    Puedes comprobarlo, ya que si en tu tabla 1 dices que tienes 2018-7-8, prueba a insertar '20180708' y te insertará el registro correctamente, y además lo visualizarás del mismo modo que antes. Del mismo modo en la tabla dos realiza la misma operación, inserta un registro como '20180708', y observarás como también inserta como año 2018, mes 7 dia 8. Si es datetime, el formato es por ejemplo '20180708 00:00:00.000'

    create table fechas (id int identity(1,1), fecha datetime)
    go
    insert into fechas (fecha) values ('20181231 23:59:59.000')
    GO
    select @@LANGUAGE /* RESULTADO ESPAÑOL */
    INSERT INTO FECHAS (FECHA) VALUES ('31/12/2018 23:59:59.000')
    GO
    INSERT INTO FECHAS (FECHA) VALUES ('2018-31-12 23:59:59.000')
    GO
    SET LANGUAGE US_ENGLISH
    GO
    INSERT INTO FECHAS (FECHA) VALUES ('12/31/2018 23:59:59.000')
    GO
    

    Supongo que tienes que especificar un poco más lo que te ocurre y como estas haciendo para obtener e insertar.

    Un saludo

    sábado, 7 de julio de 2018 23:55
  • buenas noches gracias por responder, lo hago de la siguiente manera co vb.net 2013

      Sub CIERRE()
            Try
                Dim CMD As New SqlCommand("INSERT INTO FACTURA_DIARIA SELECT * FROM FACTURA", Base.Con)
                Base.Con.Open()
                CMD.ExecuteNonQuery()
                Base.Con.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    y es alli donde tengo el problema y que cuando los grabo funciona bien el problema y cuando muevo los registros a la otra tabla

    domingo, 8 de julio de 2018 2:23
  • Hola:

    Puedes probar lo siguiente, en vez de ejecutar la sentencia desde visual hacerlo con un procedure:

    create procedure sp_facturaDiaria 
    as
    INSERT INTO FACTURA_DIARIA SELECT * FROM FACTURA
    return

    y en vb

    Sub CIERRE()
             Try
                 Dim CMD As New SqlCommand("sp_FacturaDiaria", Base.Con)
    Base.Con.CommandType = CommandType.StoredProcedure
                 Base.Con.Open()
                 CMD.ExecuteNonQuery()
                 Base.Con.Close()
             Catch ex As Exception
                 MessageBox.Show(ex.Message)
             End Try
         End Sub
    Un saludo

    domingo, 8 de julio de 2018 4:33
  • si me podes explicar un poco mas porfavor ya que no te endiento te lo agradecere
    domingo, 8 de julio de 2018 4:37
  • Gracias Por la ayuda me funciono

    saludos

    domingo, 8 de julio de 2018 4:58
  • Hola:

    No se si estas preguntando el porque funciona, ya que al marcar como respuesta, tu propia respuesta, el foro la pone como tal, y luego el me funcionó.

    Si quieres saber porque, puedes revisar la configuración regional de la máquina donde corres el código, y probablemente, este en un idioma, o país, o zona geográfica diferente, o la hora no es la que le corresponde.....

    El objetivo, de hacerlo en un procedure, era precisamente, quitar una herramienta de la ecuación.

    Un saludo

    lunes, 9 de julio de 2018 11:34