Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
DateDiff No Me Funciona O No La Entiendo
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje DateDiff No Me Funciona O No La Entiendo 
 
Hola,

He puesto esto:

Print DateDiff(Now, "01/09/2019 20:22:27", gb.Day)

y me devuelve

-241

Según las instrucciones dice que la primera fecha es la mayor y la segunda la menor además he comprobado que siguen el mismo formato seria:
Fecha1 = 08/09/2019 hh:nn:ss
Fecha2 = 01/09/2019 20:22:27

por que me devuelve -241, por favor, ¿alguien me lo aclara?

Gracias.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
GambaFeliz:

Compara con la ayuda en inglés.

http://gambaswiki.org/wiki/lang/datediff

Traducción incorrecta a español.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Ejemplo simple:

Print DateDiff("01/01/2015", "01/01/2016", gb.Year)
 


Resultado:

Citar:

1


En el caso de arriba las fechas están en formato USA. mm/dd/yy

También puedes crear una fecha.

Print DateDiff(Date(2015, 01, 01), Date(2016, 01, 01), gb.Year)
 



Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Shell escribió: [Ver mensaje]


En el caso de arriba las fechas están en formato USA. mm/dd/yy

También puedes crear una fecha.

Print DateDiff(Date(2015, 01, 01), Date(2016, 01, 01), gb.Year)
 



Saludos


Muchísimas gracias Shell ***********

Sigo loco con DateDiff después de probar y probar nada me va.

Solo me ha funcionado bien tu última info, con Date(year, month, day) lo demás no me funciona, ves el código y lo analizas y te pone loca la cabeza. Cuando combinas una fecha en String y la comparas con Now

Diossss. Terminas loco loquito.

Muchichisimas Gracias de verdad......
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
GambaFeliz:

En tu primer ejemplo de arriba del todo. ¿ Era uno de septiembre ?.  
Ten en cuenta que lo reconoce como 09/01..mm/dd/yyyy
Entrecomillado claro.

Pero eso creo que estarás acostumbrado si usas SQL.

Hay algunos temas parecidos con preguntas sobre DateDiff en la comunidad.
Usa el buscador, encontraras unas cuantas referencias, no muchas.

A mi me pasó como a ti. Pero a mi nadie me contestoooo.. y fue entonces cuando conocí otros foros donde muchos toman:

 melasuda

Aquí no tomamos eso.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Shell escribió: [Ver mensaje]


 melasuda

Aquí no tomamos eso.

Saludos


       

Estas tu hoy muy botiquero.

Que gracia, contigo al fin del mundo.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Shell:

Mira lo que acabo de comprobar, que es, lo que me estaba volviendo loco:

   ' Estándar de Fechas según el origen
   ' ----------------------------------------------
   ' Fecha según España:   Día/Mes/Año
   ' Fecha según SQLite3:  Año/Mes/Día para el tipo TEXTO
   ' Fecha según Gambas: Día/Mes/Año pero al pasar a String Gambas3 hace una conversión directa a: Mes/Día/Año

Por lo tanto Gambas3 trabaja con la fechas supongo locales, osea, Día/Mes/Año, pero cuando hace una conversión directa la pasa según el formato USA.

--Yo en lo personal pienso que Gambas3 se equivoca, ya que hace una conversión de por ejemplo -Now- a una variable tipo String pues que convierta también a formato local y no USA--

Estaría bien que opinéis los eruditos en Gambas3. Esto es verdaderamente interesante y educativo.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
gambafeliz escribió: [Ver mensaje]
Shell:

Mira lo que acabo de comprobar, que es, lo que me estaba volviendo loco:

   ' Estándar de Fechas según el origen
   ' ----------------------------------------------
   ' Fecha según España:   Día/Mes/Año
   ' Fecha según SQLite3:  Año/Mes/Día para el tipo TEXTO
   ' Fecha según Gambas: Día/Mes/Año pero al pasar a String Gambas3 hace una conversión directa a: Mes/Día/Año

Por lo tanto Gambas3 trabaja con la fechas supongo locales, osea, Día/Mes/Año, pero cuando hace una conversión directa la pasa según el formato USA.

--Yo en lo personal pienso que Gambas3 se equivoca, ya que hace una conversión de por ejemplo -Now- a una variable tipo String pues que convierta también a formato local y no USA--


Repito: gambas no trabaja con fechas locales ni las fechas en gambas tienen el mes ni el día en ningún sitio concreto.
Repito: Te estás dejando llevar por lo que tus ojos ven en la pantalla y desprecias todos los pasos intermedios.
Repito: Las fechas son números. gambas trabaja con fechas.

Citar:
Mira lo que acabo de comprobar, que es, lo que me estaba volviendo loco:


¿Qué entiendes por comprobar? ¿Que has usado unas funciones o un programa del que ignoras cómo traduce las fechas (dbsqlitebrowser o, phpmyadmin o, si me apuras, sqlite en consola y te dan resultados distintos?
¿Sabes qué te resultado te daría sqlite si tuvieses el lenguaje del SO en Inglés, o en francés?

Las Fechas, insisto, no son cadenas de caracteres en ningún entorno: Son números.
Sospecho que dado que tus datos parten de un csv como cadenas y que ante la indefinición endémica de tipo de dato de SQLite, te has abonado a aquello de "Sqlite guarda como tipo nativo de fecha las (dos o tres tipos que no interesan y después) cadenas de caracteres". y das por sagrado que esa es "la manera". Pues no. Sqlite admite que el tipo definido como fecha sea una cadena pero también te advierte que "No hay una manera directa de representar los tipos de fecha, por lo que se deberán usar las funciones de conversión intrínsecas" ( cito de memoria).

Las fechas en gambas no son cadenas de caracteres y en cuanto conviertes tus cadenas a fechas estás trabajando con números. A una cadena de caracateres no puedes aplicarle operaciones aritméticas (datediff) ni sumas y restas de usos horarios (locales del sistema).
Eso sólo se puede hacer con números.

El único problema que tienes es que no comprendes bien qué hacen y qué tipo de dato necesitan para trabajar las funciones de fecha.
Por ejemplo, dices:
Citar:
--Yo en lo personal pienso que Gambas3 se equivoca, ya que hace una conversión de por ejemplo -Now- a una variable tipo String pues que convierta también a formato local y no USA--

De las ayudas:
Citar:
Now

dTime = Now [ ( ) ] AS Date

Devuelve la fecha y hora actual.

Es decir now devuelve una fecha, es decir, un número compuesto de dos números. No una cadena. Para ver el valor devuelto por now debes usar una función de conversión. Para imprimir el valor en consola debes usar una función de conversión.
¿Sabías, por ejemplo, que print utiliza la conversión de la función str()? Es decir que si haces print now() estás usando la función str para ver esos números.
¿Y quieres ver la fecha convertida a cadena local con o sin los parámetros de localización locales (uso horario, horario de verano, etc)?

En otras palabras: No puedes "ver" un valor fecha, hay que convertirlo antes... y eso queda en manos de las funciones de cada entorno.

Copio y pego (me autocito, ¡toma ya!) la respuesta que dí en otro hilo similar a éste no hace mucho:
Citar:
No exactamente. Tenéis que tener en cuenta que las fechas son números y no tienen formato per se. Para verlas hay que convertirlas pero... ¿Qué fecha queremos ver, la que figura en la base de datos o nuestra fecha local equivalente?¿y qué fecha queremos grabar en la base de datos, la nuestra local o la fecha del servidor? Es decir, hay fechas absolutas (que sería directamente la que hay en la BD, sin más) y fechas relativas (que serían la traducción de esa fecha a nuestro horario local).
Si quiero saber a qué hora se subió un post a una Base de Datos y me dice que a las tres de la mañana ¿son las tres de la mañana mías o las de venezuela, por ejemplo, país del autor del post?
gambas contempla ambas posibilidades y nos facilita la labor... pero hay que entenderlo

Considedad éste código:
Código: [Descargar] [Ocultar] [Seleccionar]
f = Val("18/2/19 00:00") 'devuelve 18/02/2019 00:00:00 como fecha
Str=str(f) 'devuelve "18/02/2019 00:00:00" Es decir, f convertida a cadena
Str=CStr(f) 'devuelve "02/17/2019 22:00:00" es decir: Hora UTC - localización (UTC+2=horario de verano en España. Al restar las dos horas, cambiamos de día)
f2 = CDate("2/18/19 00:00") 'devuelve 18/02/2019 02:00:00. Es decir: Hora UTC + localización.
 


Resumiendo:
Val y Str son inversas y manejan horas absolutas.
Cdate y Cstr son inversas y aplican los parámetros de Localización al valor recibido.


Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Shordi:

Voy a responderte a poquito a poco, vale.

Según te he entendido. Yo te voy a responder de forma radical y tu ya me corriges.

Fechas (DATE) = Son números y como números deben tratarse. ¿Es así?

--- Mi mayor fallo es tratar churras con merinas, osea, Fechas (números) y cadenas. --

Con lo cual según te entiendo es que primero como ley, debo pasar las expresiones de cadenas a su equivalente en número, osea, expresión de fecha a Date.

Pero mira este ejemplo,

Yo tengo una expresión de fecha guardada en un archivo .conf como ya sabes por settings, osea, Now, pero antes lo formateo con Format y lo guardo en .conf

Corrige si me equivoco:

1. Primer fallo, debo guardar Now sin formatear en el .conf, no debo tratarlo son date y debo guardar como date, ¿es así?
2. Al recuperar del conf. la recupero en una variable directa, osea As Date, ¿es así?
3. Ya la puedo tratar con DateDiff ya que esta hace la diferencia entre dos Date, ¿es así?

Por lo que mi fin es, esto:

Dim iDesface As Integer = DateDiff(dConf, Now, gb.Second) ' lo pongo así para obtener en positivo ya que me gusta mas así pero lo estrictamente correcto según advierte gambas es poner la fecha mayor antes que la fecha menor, el resultado es tener un Integer negativo (es lo correcto) o tener un integer positivo (es lo que me gusta a mi)

Bueno yo he terminao tu me dices si entendí tus explicaciones.
 



 
última edición por gambafeliz el Lunes, 09 Septiembre 2019, 08:05; editado 1 vez 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: DateDiff No Me Funciona O No La Entiendo 
 
Citar:

1. Primer fallo, debo guardar Now sin formatear en el .conf, no debo tratarlo son date y debo guardar como date, ¿es así?

.conf es un archivo de texto por lo que tendrás que guardar la fecha convertida en texto ¿Función a emplear? Str (ver el ejemplo de más arriba)
Citar:

2. Al recuperar del conf. la recupero en una variable directa, osea As Date, ¿es así?

Exacto, pero al estar almacenada como cadena la conviertes en date. ¿Función a emplear? val (ver el ejemplo de más arriba)
Citar:

3. Ya la puedo tratar con DateDiff ya que esta hace la diferencia entre dos Date, ¿es así?

Así es.
 




===================
No podemos regresar
 
shordi - 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 Calcular La Edad Con DateDiff kexxya General 7 Viernes, 29 Abril 2011, 19:21 Ver último mensaje
DEATH
No hay nuevos mensajes Ejemplo Para Usar DateDiff (diferencias En... jsbsan Aplicaciones/Fragmentos de Código 1 Jueves, 19 Marzo 2015, 18:20 Ver último mensaje
v3ctor
No hay nuevos mensajes ¿Os Funciona La Granja? shordi General 8 Viernes, 27 Julio 2018, 16:47 Ver último mensaje
shordi
No hay nuevos mensajes Mensajes Que No Entiendo En La Terminal De... v3ctor General 9 Sabado, 05 Octobre 2019, 09:03 Ver último mensaje
Shell
 

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

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
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