Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
Problema Con Fechas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
He mandado un mensaje privado a ver si recuperamos la confianza de este señor. Le he comentado que en su caso yo lo que haría sería la conversión de los formatos de fecha en Sqlite3 con la función strftime y le pongo un ejemplo parecido a sus necesidades que tengo comprobado que funciona.
  fecdsd = Format(vbxdesde.Value, "yyyy-mm-dd") 'Para interpretar por Sqlite3
  fechta = Format(vbxhasta.Value, "yyyy-mm-dd") 'en el formato que almacena fecha
  'No utilizamos substitucion porque no funciona. Insertamos string con el formato
  'YYYY-MM-DD que es como guarda los datos en la tabla.
  strsql = "SELECT * FROM vselped "
  strsql &= " WHERE strftime('%Y-%m-%d', fecped) BETWEEN '" & fecdsd & "' AND '" & fechta & "'"
  strsql &= " ORDER BY fecped"
  rstped = db.Current.Exec(strsql)
 


No hay una forma única de hacer las cosas, siempre hay otras maneras de hacer y decir lo mismo.

Esperamos no haber llegado demasiado tarde.

Un saludo a todos
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
Lo que pasa a veces con las fechas es que sin saberlo las guardan en formato anglosajón y luego cuando las recuperan  y ponen format(rs!fecha,"dd/mm/yy") sale mal pero eso no es porque esté mal el format. Es porque al guardar la fecha la metieron en formato ingles y por tanto los dias y los meses están cambiados.

Siempre es conveniente proba con fechas de dia 14 o 20 (dia mayor que 12) a ver si se guarda lo que esperamos o no y así una vez estamos seguros que hemos guardado la fecha que queremos ya no tendremos problema alguno al extraerla en el formato que sea.

Pittusa
Citar:

Estoy probando con between, pero no funciona

conexion.exec ("select Fecha from Albaranes between '10/02/2010' and '20/03/2010' ")

Según he estado leyendo por ahí, esta consulta debería mostrar la fechas comprendidas entre 10/02/2010 y 20/03/2010.

pero no me funciona.

debería ser
conexion.exec ("select Fecha from Albaranes where fecha between '10/02/2010' and '20/03/2010' ")
Y fecha debería ser de tipo date, datetime o timestamp. Si es un string no funcionará. Si la fecha se convierte a algún formato cast o convert tampoco funcionará porque será vista como un string.

Y ahora no recuerdo si el '10/02/2010'  y el '20/03/2010' deben estar en formato ingles o español. Esa duda tengo ahora

 
 



 
última edición por soplo el Miercoles, 02 Febrero 2011, 13:54; editado 1 vez 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
Yo use el código de David para una consulta entre fechas y funciona de maravilla. Para guardar la fecha primero la convertí con format ya que por defecto me obliga a introducirla por el orden mes, día ,año y yo lo quiero día ,mes, año.
 Luego para las consultas uso dos textbox donde pongo la fecha en orden normal(para nosotros).
Lo probé con gambas 2.19 y base de datos sqlite tres.
Saludos
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
Este es el código de David
Desde = Split(TextBox1.Text, "/")
'ponemos lo guiones en barritas para que el motor sqlite3 lo reconozca
'----------------------------------------------------------
DesdeSql = "'" & Desde[2] & "-" & Desde[1] & "-" & Desde[0] & " 00:00:00'"
Hasta = Split(TextBox2.Text, "/")
HastaSql = "'" & Hasta[2] & "-" & Hasta[1] & "-" & Hasta[0] & " 00:00:00'"

'y haces la busqueda
Resultados = Conexion.Exec("select * from control where dni='" & TextBox3.Text & "' and datetime(fecha) between" & DesdeSql & " and " & HastaSql)

Y claro que funciona, pero fíjate la de operaciones que tienes que hacer para comparar fechas todo por asegurarse que se piden en el orden correcto ¿no es mas lógico que las fechas estén debidamente introducidas y que no hay que hacer todo eso para preguntar por fechas?

Cuando tu guardas una fecha haces esto
Rs!fecha=textboxfecha.text

Y te da igual en que forma las guarde. Lo que importa es que guardes bien lo que querías. Si en textbox fecha tienes '01/02/2010' quizá al meter en el campo tu estas dando por supuesto que 01 es el dia y 02 es el mes pero quizá la BD no lo interpreta igual. La BD puede interpretar que 01 es el mes y 02 es el dia. Por eso cuando luego comparas o sacas desde fecha a fecha o cosas semejantes no te hace bien. Eso puede ocurrir con cierta facilidad porque las funciones que usa gambas relativas a fechas trabajan con el sistema anglosajón de fechas no con el español.

Yo tengo hechas mis funciones para que esas cosas no pasen y se lo explico a quien le interese, pero es lo de menos. Lo de mas es que sea cual sea el sistema que cada uno use para guardar fechas lo que tiene que hacer es probar a meter la fecha 20/01/2010 y ver si eso le da error. Si la BD está interpretando eso en formato anglosajón dará error porque no puede haber un mes 20. Sea cual sea la BD el problema es el mismo.

Una vez tengamos un sistema eficiente para guardar fechas en español ya no tendremos problema alguno para hacer operaciones con fechas sean las que sean y se podrán hacer cosas como
rs=cn.exec("select * from tabla where fecha between '" & textbox1.text & "' and ' " & textbox2.text & "'")

Es decir operaciones con fechas directamente.y el código ese que hizo David ya no lo necesitará. Si le dió tantas vueltas es porque no encontraba la manera de que le entregaran lo que guardó y eso se debe a que no guardó bien. El cree que si porque no le dió error, pero en realidad no porque el sistema interpretó la fecha de forma contraria a la deseada.

Siempre que tengas un campo de tipo fecha la primera prueba meerle un 20 de enero y ver que pasa. Cuando sepas que guardas la fecha bien te has quitado un montón de problemas de fechas posteriormente. Una vez ya tienes un método como es mi caso ya nunca tienes un problema con fechas.

 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
Yo lo hice como lo explico ahtonio solo que mi problema era que yo queria darle formato aun valuebox y a una celda de un tableview y no me lo ponia como yo queria me tiraba una numeracion que nada que ver con el resultado que queria ver y ami me funciono de esta manera:

valuebox1.value = Format(Date, "yyyy/mm/dd")
y
tableview[linea, 7].text = Format(rs!fecha, "yyyy/mm/dd")

Si ponia el formato en "dd/mm/yyyy" tenia problemas pero de la forma que menciono arriba todo de maravilla.

Saludos a todos.
 



 
hertux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Función Stat.Fechas Shell General 5 Viernes, 28 Septiembre 2012, 09:47 Ver último mensaje
Shell
No hay nuevos mensajes Trabajo Con Fechas smorgerbowrg General 8 Viernes, 16 Noviembre 2012, 17:06 Ver último mensaje
smorgerbowrg
No hay nuevos mensajes Fechas. Sin Problemas Shell Bases de Datos 0 Lunes, 17 Octobre 2016, 20:56 Ver último mensaje
Shell
No hay nuevos mensajes Rango De Fechas En Componente calcena General 1 Jueves, 26 Julio 2018, 18:02 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron