https://foro.gambas-es.org/viewtopic.php?f=3&t=7617&p=45728#p45728
-----------------------------------
shordi
Miercoles, 21 Agosto 2019, 11:10

Re: Necesito Convertir Archivo, CSV A Una Tabla SQLite3, ¿Cual Es Vuestro Camino Mas Simple?
-----------------------------------
[quote user="gambafeliz" post="45723"]Estoy perdido, te cuento.

Es que tengo en el CSV 3 columnas con valores que representan Fechas pero nada estándar. Tu programa distingue 2 columnas como DATE y una como CADENA. Creo entender por que. Las dos primeras que ve como DATE y la tercera como CADENA. Como las distingue tengo que ver como, ya que no lo he mirado. 

Pero estoy perdido en los conceptos. SQLite según sus manuales dice que tiene tres tipos válidos para representar fechas (TEXT, REAL, INTEGER) y tu me los conviertes a DATE o eso es lo que veo en GAMBAS

Básicamente es que estoy tan perdido que no entiendo, por que, SQLite dice estas son mis reglas, y Gambas aplica otras visualmente, supongo. (Todo esto ocurre por que no se ni de Gambas ni de SQLite, vale)

Te voy a dar un ejemplo:

Datos CSV (yo supongo que el CSV no tienes tipos, si estoy equivocado, por favor dímelo)
Formato        = dia/mes/año Hora
Fecha1.valor = 8/2/19 10:00
Fecha2.valor = 8/11/19
Fecha3.valor = (unas veces "-" otras veces 8/11/19)

Tu conversión CSV a Tabla (lo veo en Gambas)
Formato        = dia/mes/año Hora
Fecha1.valor.DATE      = 08/02/2019 10:00:00
Fecha2.valor.DATE      = 08/11/2019 00:00:00
Fecha3.valor.CADENA = (unas veces "" otras veces 8/11/19 tal cual esta en CSV)

Yo en PHP conversión a Tabla según mi adaptación en su día, viendo los manuales de SQLite y con total desconocimiento ni ayuda externa.
Formato       = año/mes/dia Hora
Fecha1.valor.CADENA = 2019/02/08 10:00
Fecha2.valor.CADENA = 2019/11/08
Fecha3.valor.CADENA = (unas veces "-" otras veces 2019/11/08)

Yo quiero dialogar de forma nativa con SQLite y trabajar con Gambas, mi principal problema que tuve en su día, fue, que SQLite me daba problemas en el orden de las fechas cuando extraigo una Select ordenada por fechas. Y desde que convertí los datos en PHP se acabo el problema. Yo busco la misma estabilidad de datos en Gambas y con tu conversición.

Por favor, me gustaría saber tu opinión al respecto. Gracias. 

Nota: sobre tu opinión, por ejemplo, ¿tengo que cambiar tu programa conversión a algo parecido a lo que he hecho en PHP o tu lo ves diferente, no se?[/quote]
Yo de php ni papa, o sea, que la segunda parte del post la ignoro.
Respecto a la primera, verás que cuando le pasas a Val la cadena dia/mes/año hora:minutos, hace la conversión correctamente. ¿Por qué? porque en Gambas todas las fechas internamente son tipo datetime es decir incluyen el tiempo. Se compone en realidad de dos números, uno que indica el número de días desde el 1 de Enero del 4801 antes de Cristo. El otro es el número de milisegundos desde la media noche. No existe, internamente, el tipo date a secas (otra cosa es el manejo de las funciones de fecha que te pueden ocultar o no la hora).
Por tanto, a la hora de identificar los tpos de valor como fecha en un csv que viene mal formateado, invéntate una función, por ejemplo donde si la longitud del dato es menor de 11, añadas 00:00:00 a la cadena o algo así y pre-procesa el .csv antes de su inclusión... o cargalo tal cual viene en una tabla temporal y luego post-procesa dicha tabla... o si quieres, modifico el programa para que si tú dices que es DATE y el val no lo reconoce así, añada los ceros y pruebe otra vez...

Para saber más sobre fechas mira esto:
[url=https://translate.google.es/translate?hl=&sl=en&tl=es&u=http%3A%2F%2Fgambaswiki.org%2Fwiki%2Fdoc%2Fdate]https://translate.google.es/translate?hl=&sl=en&tl=es&u=http%3A%2F%2Fgambaswiki.org%2Fwiki%2Fdoc%2Fdate
Aquí el original en inglés:
[url=http://gambaswiki.org/wiki/doc/date]http://gambaswiki.org/wiki/doc/date

Como decía uno de mis mentores: El mejor programa es el que conoces. Es mal vicio ese de comparar lenguajes... :mryellow:  :mryellow:


