2009-09-30 9 views
1

Je veux une requête SQL pour vérifier si un horodatage donné tombe dans les heures d'ouverture d'une entreprise. Ces heures d'ouverture changent en fonction de la période de l'année (horaires saisonniers) et l'entreprise est fermée pour certaines vacances. J'ai une liste de ces dates, même si elles sont sujettes à changement.Quelle est la meilleure façon de déterminer si un horodatage correspond aux heures d'ouverture saisonnières?

Ce que je veux est une bonne structure pour stocker ces informations dans la base de données et une fonction qui ressemble à ceci:

CREATE OR REPLACE FUNCTION is_business_open(event TIMESTAMP) RETURNS BOOLEAN AS $_$ 
... 
$_$ 

Je vais écrire ceci dans plpgsql sur PostgreSQL 8.2.x, si cela fait une différence.

Répondre

0

Je suggère de mettre les données (date, heure d'ouverture, heure de fermeture) dans un tableau et obtenir votre requête à sélectionner à partir de là.

2

Je suggère des plages de dates d'ouverture, ainsi que des heures.

date_start, date_end, time_open, time_close 

Une requête pourrait ressembler à ceci:

select time_open, time_close from hours_table where date_start < @DateInput and @DateInput < date_end 

Vous ainsi que mettre vos heures d'ouverture. Tout le reste est "fermé"