Spanish [Solucionado[ SQL Type Date

TheFalcon

Active Member
Licensed User
Longtime User
Buenas, mi pregunta es sencilla pero no la encontré en el tutorial SQL ni en ningún otro mensaje,
desde una base de datos SQL cargo valores y los pongo en un Listview, el problema es que como no puedo crear el Tipe = DAte e de poner las fechas como Text, con lo cual no Puedo ordenarlas en orden Descendente ni Ascendente, hay alguna forma de pasar un valor a Date, por que cuando lo paso a un Listview e de pasarlo como Array as string.

B4X:
tabla_lista.Add(Array As String(fecha_informe, peso_informe, tipo_informe))
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Una forma de que te ordene es poniendolo en formato yyyymmdd (año mes dia)

Si quieres puedes pasar la fecha a ticks, que es como trabaja Android, por ejemplo:

B4X:
    Dim l As Long
    DateTime.DateFormat="dd-mm-yyyy"  ' pon el formato de fecha que quieras utilizar
    l= DateTime.DateParse("9-3-2015")  ' pasa la fecha de tu string a ticks
    Log("fecha " & DateTime.Date(l)) ' verifico que es correcta
    Log(" DateTime.DateParse " &  l) ' aqui para que veas los ticks

Saludos
 

TheFalcon

Active Member
Licensed User
Longtime User
Muchas gracias me viene muy bien lo he probado, aunque no me ordena algunas fechas bien sera por lo que comentas que lo use en formato yyyymmdd , aunque en el ejemplo lo pones como dd-mm-yyyy y lo e probado como en el ejemplo.

Me auto respondo, es por eso el formato a de ser mmDDyy para que te ordene bien.
 
Last edited:

TheFalcon

Active Member
Licensed User
Longtime User
Y ya para terminar de abusar, yo recupero la fecha en formato mmddyy es decir Hoy 03-09-15 hay algún modo de pasarla a ddmmyy es decir 09-03-15 , yo tengo pensado hacerlo con un MID sacando los valores y luego montan dolo ordenado, pero si hay algún otro modo, pues a los apuntes le vendrá de lujo.

Por lo demás me ha sido de gran ayuda bgsoft muchísimas gracias :)
 

Descartex

Well-Known Member
Licensed User
Longtime User
Buenas,
como bien te comentó bgsoft si haces esto:
B4X:
Dim l As Long
    DateTime.DateFormat="dd-mm-yyyy"  ' pon el formato de fecha que quieras utilizar
    l= DateTime.DateParse("9-3-2015")  ' pasa la fecha de tu string a ticks
    Log("fecha " & DateTime.Date(l)) ' verifico que es correcta
    Log(" DateTime.DateParse " &  l) ' aqui para que veas los ticks
    DateTime.DateFormat="yyyymmdd"  ' pon el formato de fecha nuevo
    Log("fecha " & DateTime.Date(l)) ' verifico que es correcta

con eso, cambiarias un formato de fecha por otro, siempre que le des el patrón que quieras.

Un saludo.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

En el ejemplo te puse dd-mm-yyyy por que de cara a la interpretacion es mas facil, y por eso no te ordena, por eso te puse que podias ordenar poniendo yyyymmdd, es algo simple de ver, si tu formato es el de mi ejemplo, con estas fechas te las ordenaria asi (de menor a mayor):
01-01-2020 01012020
02-01-2015 02012015
03-01-2030 03012030

Como ves en las fechas reales estan mal ordenadas, pero mira la fila de la derecha (en azul) y veras que es correcto, y si la ordenas como te dije al principio lo hace bien:

2015-02-02 29150202
2020-01-01 20200101
2030-01-03 20300103

En lo que te ha comentado Descartex sobre mi propuesta, trabaja con el formato que tu quieras, dice que quieres usar ddmmyy, pues formatea la fecha asi:

B4X:
DateTime.DateFormat="dd-mm-yy"

Y luego de cara a ordenarlas, puedes hacerlas con los tikcs, por que los ticks se incrementan con el paso del tiempo, asi que ese valor es facil de ordenar:

B4X:
l= DateTime.DateParse("9-3-15")  ' pasa la fecha de tu string a ticks

Por favor, si crees que esta resuelto cambia la cabecera y añade [SOLUCIONADO] y si no te es mucha molestia añadelo al post de Heppy :
Indice de temas con [Solucionado] o de gran interés
https://www.b4x.com/android/forum/threads/indice-de-temas-con-solucionado-o-de-gran-interés.44948/


Saludos
 
Top