Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 19-07-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bueno, más bien me preguntaba cómo sumará horas esa función, pero ya lo he mirado, suma segundos:

Código SQL [-]
ISC_QUAD * addhour (ISC_QUAD *date, int *hours)
{
  if (!date || !hours)
    return NULL;
  else
    return addseconds(date, 60 * 60 * *hours);
}




static ISC_QUAD * addseconds (ISC_QUAD *date, int seconds)
{
    struct tm t;
    isc_decode_date(date,&t);
    t.tm_sec += seconds;
    if (t.tm_sec >= 60) {
      t.tm_min  += (t.tm_sec / 60);
      t.tm_sec ٪= 60;
      t.tm_hour += (t.tm_min / 60);
      t.tm_min ٪= 60;
      t.tm_mday += (t.tm_hour / 24);
      t.tm_hour ٪= 24;
      while (t.tm_mday > daysoftsmonth(&t)) {
        t.tm_mday -= daysoftsmonth(&t);
        t.tm_mon++;
        if (t.tm_mon > 11) {
          t.tm_mon=0;
          t.tm_year++;
        }
      }
    }
    else if (t.tm_sec < 0) {
      t.tm_min += ((t.tm_sec - 59) / 60);
      if (t.tm_sec ٪ 60 == 0) {
        t.tm_sec = (t.tm_sec ٪ 60);
      }
      else {
        t.tm_sec = (t.tm_sec ٪ 60) + 60;
      }
      if (t.tm_min < 0) {
        t.tm_hour += ((t.tm_min - 59) / 60);
        if (t.tm_min ٪ 60 == 0) {
          t.tm_min = (t.tm_min ٪ 60);
        }
        else {
          t.tm_min = (t.tm_min ٪ 60) + 60;
        }
        if (t.tm_hour < 0) {
          t.tm_mday += ((t.tm_hour - 23) / 24);
          if (t.tm_hour ٪ 24 == 0) {
            t.tm_hour = (t.tm_hour ٪ 24);
          }
          else {
            t.tm_hour = (t.tm_hour ٪ 24) + 24;
          }
          while (t.tm_mday < 1) {
            t.tm_mon--;
            if (t.tm_mon < 0) {
              t.tm_mon = 11;
              t.tm_year--;
            }
            t.tm_mday += daysoftsmonth(&t);
          }
        }
      }
    }
    return (ISC_QUAD *) gen_ib_date(&t);
}


static int daysoftsmonth(struct tm *t)
{
  int month = t->tm_mon + 1;
  int year = t->tm_year + 1900;
  return intern_daysofmonth(month, year);
}
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear libro Excel con cierta cantidad de hojas MAXIUM Servers 2 05-07-2010 18:53:46
filtrar fecha y/o hora en un campo timestamp CarlosHernandez Firebird e Interbase 2 18-02-2010 18:09:28
concatenar fecha y hora en timestamp Vlady SQL 4 21-05-2008 17:51:04
Leer una cierta cantidad de caracteres de una archivo. mcalmanovici Varios 9 22-01-2008 20:01:24
Sacar la hora de un campo TimeStamp Vlady Conexión con bases de datos 1 15-02-2007 19:07:07


La franja horaria es GMT +2. Ahora son las 19:35:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi