Update Fechas Mysql

  1. 6 months ago

    javier l

    18 Apr 2017 Argentina

    Hola.
    Amigos, tengo una tabla de una base de datos con los siguientes campos:

    Id ---> integer
    mes ---> varchar tamaño 2
    ano ---> varchar tamano 4
    fechacontrol ---> date

    Cargada por ejemplo asi:

    Id mes ano fechacontrol
    1 3 2016 0000-00-00
    2 4 2016 0000-00-00
    3 5 2016 0000-00-00
    4 6 2016 0000-00-00
    5 7 2016 0000-00-00
    6 8 2016 0000-00-00

    Estoy tratando de realizar una rutina para que quede asi:

    Id mes ano fechacontrol
    1 3 2016 2016-03-01
    2 4 2016 2016-04-01
    3 5 2016 2016-05-01
    4 6 2016 2016-06-01
    5 7 2016 2016-07-01
    6 8 2016 2016-08-01

    Siendo el formato de la fecha en la tabla Mysql AAAA-MM-DD

    La rutina que utilizo es

    Dim db As New MySQLCommunityServer
    dim sql as string
    db.Host = vector(0)
    db.Port =val(vector(1))
    db.DatabaseName = empresaactiva
    db.UserName = Vector(2)
    db.Password = Vector(3)



    If db.Connect Then
    sql = "UPDATE depositos SET fechacontrol=ano/mes/''01'" '************************'

    DB.SQLExecute(sql)

    If DB.Error Then
    MsgBox("DB Error: " + DB.ErrorMessage)

    Else
    msgbox "La modificacion fue exitosa"
    End If
    else
    msgbox "NO me pude conectar"
    end if
    db.close

    he probado de varias maneras modificando siempre
    sql = "UPDATE depositos SET fechacontrol=ano/mes/''01'"

    pero no lo he logrado

    La idea es que de cada registro se tome el mes, el año, le agregue como dia 01 y forme la fechacontrol para cada registro.

    Si alguien lo sabe o logra, por favor acepto gustoso la ayuda.

  2. Vaughn C

    18 Apr 2017 Pre-Release Testers Tropic of Cancer

    Esto es más un asunto de SQL pero me luce que no estás supliendo un 'datestring' aceptable:

    "UPDATE depositos SET fechacontrol=CONCAT_WS('-',ano,mes,'01')"

    La manera de concatenar/formatos aceptables puede variar según el tipo de SQL: no es mi 'expertise' pero puede que te ayude a resolver.

  3. Javier M

    19 Apr 2017 Pre-Release Testers, Xojo Pro Madrid, Spain

    Hola @javier l

    Podrías utilizar Xojo.Core.Date para obtener una fecha de punto de partida, incrementarla en días como vayas necesitando y obtener la cadena con el formato compatible SQL mediante el método ToText. Luego sólo es cuestión de utilizar la cadena resultante en combinación con la sentencia SQL para actualizar la tabla.

    Javier

  4. Victor M

    19 Apr 2017 Pre-Release Testers

    Hola, esto puede servirte.

    Para mostrar cada registro tienes que crear RS. Dim ncreacion As New Date Dim strDate as String = "2016-03-01" ncreacion.Year = Val(NthField(strDate, "/", 1)) ncreacion.Month = Val(NthField(strDate, "/", 2)) ncreacion.Day = Val(NthField(strDate, "/", 3)) sql = "UPDATE depositos SET fechacontrol = " + SRT(ncreacion.Year) + "/" + Set(ncreacion.Month) + "/''01' "

    Saludos.

  5. javier l

    20 Apr 2017 Argentina

    Hola.
    La solucion propuesta por Vaughn Cordero anduvo perfecto.

    Muchas Gracias a todos los que ayudaron, me salvaron, gra gra gracias!!!!!

or Sign Up to reply!