FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Solicito ayuda para definir funciones sobre estándar de fechas ISO o SQL
Entre las funciones de la unidad GHFRTL se encuentra una de nombre ghISODate, esta recibe un valor de tipo TDateTime y devuelve una cadena de caracteres con el formato yyyy-mm-dd (año, mes y día expresando la fecha dada). Existe una función muy parecida, de nombre ghISODateTime, que al igual que la anterior toma un valor de tipo TDateTime, pero la cadena que regresa lleva el formato yyyy-mm-dd hh:nn:ss, es decir, además de la fecha incluye la hora con minutos y segundos.
Existen otras funciones se que apoyan en las anteriores dos para convertir valores de tipo TDateTime a su expresión como cadenas de caracteres para ser añadidas en la formación de sentencias SQL: ghQuotedISODate, ghQuotedISODateTime, ghSQLValue, ghSQLValues, ghCommaSQLValues. Obviemos el hecho de que podemos usar objetos TParam / TParameter cuando vamos a lanzar una sentencia SQL para que sea ejecutada por un servidor de base de datos. GH Freebrary es una biblioteca de propósito general, y aunque todas sus funciones tuvieron origen en necesidades prácticas de proyectos ordinarios, he intentado dar a cada una de sus partes un diseño estandarizado, consistente y flexible. Aunque existen las colecciones Params / Parameters, nunca se sabe cuándo un programador va a necesitar prescindir de éstas y convertir un valor de tipo TDateTime a una cadena de caracteres bajo un formato estándar. El asunto es que había dado por hecho que el formato de fecha y hora ISO, incluyendo minutos y segundos, era sencillamente yyyy-mm-dd hh:nn:ss, porque hace algunos años lo leí en algún documento y al ver que Firebird (uno de los motores más respetuosos con los estándares) lo aceptaba a la primera, lo asenté así en la función ghISODateTime: Pero se presentan dos principales trabas:
Sospecho que he confundido el formato ISO de fecha y hora del enlace anterior, con el formato que tradicionalmente usan algunos motores SQL para representar el tipo TimeStamp. Para solucionar estas discrepancias, lo primero que me gustaría saber es cuál es el formato más aceptado en los distintos motores de bases de datos, a la hora de expresar un valor de fecha y hora como cadena de caracteres. En Firebird, '2013-04-30 14:25:00' es perfectamente válido. Pregunta para los compañeros: ¿cómo podría ser expresado a manera de cadena de caracteres y sin usar funciones ese mismo valor en una sentencia SQL de otros motores? Esto es con el fin de conocer el estándar más respetado. Una vez identificado éste, ¿es un estándar al que podríamos darle el adjetivo de "ISO"? ¿o mejor "SQL"? ¿algún otro? ¿deberían ser renombradas las funciones "ghXXXISOXXX" mencionadas anteriormente? ¿Debería añadir la "T" al formato y crear otra función exclusiva para SQL? Luego, asumiendo que no existe un estándar que "a la primera" acepten todos lo motores de base de datos, me tienta la idea de definir una variable global como las clásicas ShortDateFormat y ShortTimeFormat de Delphi (algo como GHSQLDateTimeFormat) para no tener que pasar a toda esa serie de funciones el formato que debe emplearse cuando alguno de los valores sea de tipo TDateTime, sino que esa nueva variable lo determine. Me interesa convertir a formato de fecha y hora con la "T" puesto que eso marca el estándar ISO y en muchos lugares resultarán útiles las funciones gh que así lo hagan, pero también me interesa convertir a una cadena de caracteres aceptable en la mayoría de motores SQL. Solicito su ayuda para llevar a buen puerto este análisis. Espero haberme dado a entender y de antemano les extiendo mi gratitud. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda sobre manejo de fechas | francodelphi | Conexión con bases de datos | 12 | 27-10-2011 02:22:15 |
Como definir Funciones Globales | destrukthor | Varios | 4 | 07-07-2006 15:12:18 |
Problemas al definir UDF (Funciones en una DLL) | pcicom | Firebird e Interbase | 2 | 21-06-2006 06:49:15 |
Definir funciones y procedimientos en FastReport???? | burasu | Impresión | 1 | 16-05-2005 22:47:37 |
Sobre actualizaciones de programas y estándar x2 | obiwuan | Humor | 0 | 06-05-2003 23:04:07 |
|