Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 08-05-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 24
andres1569 Va por buen camino
Hola otra vez, trataré de explicarlo:

Código:
 
WHERE 7 - (("12/29/2080" - CAMPOFECHA) -
       CAST ((("12/29/2080" - CAMPOFECHA) / 7) AS INTEGER) * 7)
Este galimatías lo que hace es calcular el resto, es decir si tenemos una fecha que sabemos que es domingo (29-12-2080), en Pascal sería algo así:

DiaSemana := (FechaConocidoDomingo - Fecha) mod 7

O sea, restamos la fecha de la fecha conocida como domingo y hallamos el resto de dividir por 7. Si el resto es 0 significa que estamos en domingo (han pasado X semanas exactas), si es 1 el día es sábado, si es 2 es viernes ... si es 6 es lunes. Para que el resultado siga el orden con que numeramos los días de la semana, es decir de 0 a 6, restamos de 7 (mira el principio " 7 - ").

Lo demás es una forma un tanto farragosa de hallar el resto de una división, como no hay una función MOD en SQL (al menos que conozca en SQL local), tenemos que recurrir al truco de hallarlo manualmente:

Restamos las fechas ("12/29/2080" - CAMPOFECHA),

Al resultado de esa resta le restamos los días que suman todas las semanas exactas transcurridas:

CAST ((("12/29/2080" - CAMPOFECHA) / 7) AS INTEGER) * 7

lo cual nos da el número de desfase respecto al domingo.

Al no haber función DIV como en Delphi, dividimos con el operador /, lo cual da un valor float, lo truncamos (CAST X as Integer), y luego volvemos a multiplicar por 7 (esto da un número de días múltiplo exacto de 7, o sea semanas cumplidas)

Es una pena que haya que recurrir a artilugios así para algo que podría venir fácilmente incluido, pero te puedo asegurar que he visto cosas bastante más enrevesadas, concretamente en una base Interbase, para calcular los días de un mes (hablo de Interbase 5.6), y eso que ahí se pueden utilizar StoredProcs y variables.

Saludos
Responder Con Cita
 



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
como extraer la el año de una fecha en un sentencia SQL? viajero2015 SQL 5 06-01-2005 21:25:21
Dia de la semana de una fecha Telemaco MS SQL Server 1 01-06-2004 17:05:16
Extraer Fecha En un Edit.- UTECYBER OOP 2 24-09-2003 01:08:01
Dia de la semana en una fecha User_Baja_2 Varios 1 21-08-2003 15:17:43
No puedo extraer la el día de una fecha Manuel Firebird e Interbase 1 20-05-2003 09:15:11


La franja horaria es GMT +2. Ahora son las 19:24:23.


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