jueves, 13 de junio de 2013

Literales de tipo Date y DateTime en GeneXus

Cuando programamos, ya sea en GeneXus o en cualquier otro lenguaje, es muy común usar literales en el código, para valores conocidos o especiales de la aplicación.

Por ejemplo, si voy a hacer una suma de varios registros, inicializo la variable en cero:
&suma = 0
O si estoy por ejemplo en una transacción y quiero saber si estoy en modo Insert, puedo preguntar
if &Mode = 'INS'
    ...
endif
(nota: es un ejemplo... lo recomendable en este caso es usar el dominio enumerado TrnMode)

En GeneXus hay unos cuantos tipos de datos, pero podríamos decir que los principales son cuatro: números, strings, booleanos y fechas (o fecha-hora para ser más precisos).

Para los tres primeros, es bien sabido como expresar literales, ¿pero para las fechas?

Esta funcionalidad creo que no es muy conocida, pero en GeneXus también se pueden escribir literales de fechas, utilizando el caracter # como delimitador (así como usamos las comillas simples o dobles para los strings).

Así por ejemplo, las siguientes expresiones son válidas:
&date = #2013-06-13#
&dateTime = #2013-06-13 06:23p#
Por más información, pueden ver la documentación oficial en el Wiki.

Esto en sí no parece tener demasiadas ventajas con respecto a usar las funciones YMDtoD y YMDHMStoT, pero hay un caso donde sí en necesario usarlos: cuando queremos hacer un call dinámico a un objeto SD, que recibe una fecha por parámetro. Por ejemplo:
&callObject = "sd:MiObjetoSD?#2013-06-13#"
call(&callObject)
En todo caso, es una herramienta más de la que disponemos a la hora de escribir nuestras aplicaciones en GeneXus.

No hay comentarios.:

Publicar un comentario