2010-03-19 7 views

Répondre

6

Vous souhaitez définir votre « Valeur par défaut ou de liaison » à l'un des éléments suivants:

SELECT (dateadd(day,(3),getdate())) 

SELECT (dateadd(day,(3),cast(floor(cast(getdate() as float)) as datetime))) 

Le premier vous donnera la date d'aujourd'hui et le temps et ajoutez exactement 3 jours pour le (donc vous serez laissé avec la valeur de temps là-bas aussi bien).

La seconde vous donnera la date du jour avec une valeur horaire de 00:00:00 (c'est-à-dire minuit) et ajoutera exactement 3 jours.

EDIT:

Ah .. Je vois que vous dites "jours ouvrables". Eh bien, mon exemple vous donnera 3 chronologiques jours, mais pour calculer 3 jours ouvrables sera incroyablement difficile puisque la définition même de «jour de travail» peut être légèrement ambiguë. Par exemple, je vais faire l'hypothèse qu'un «jour ouvrable» est la norme du lundi au vendredi. Cependant, que se passe-t-il lorsque l'un de ces lundis est une fête nationale? Au Royaume-Uni, cela peut changer chaque année (c'est-à-dire que ce n'est pas toujours exactement la même date).

Il est difficile de calculer les «jours de travail». Il est généralement préférable de procéder par le biais d'une table de correspondance à l'aide d'une fonction (en code ou en SQL).

Voici un lien qui peut donner un aperçu de ce ... Ce n'est pas nécessairement joli, cependant! :)

SQL Server - UDF for Business Days Calculation

+0

OP demande * jours * de travail –

+0

@DavidV - A noté et édité ma réponse en conséquence. – CraigTP

+1

'GETDATE() + 3' est identique à' dateadd (day, (3), getdate()) ' –

3

Dur. Les valeurs par défaut SQL doivent être simples - et les jours de travail sont très compliqués à faire. Non seulement vous devez penser au jour de la semaine, mais aussi aux vacances.

Si vous avez une table de vacances, vous pouvez le faire avec une fonction personnalisée et/ou une procédure stockée déclenchée.

+0

hmm, n'a pas pensé aux vacances .... – Michel

0

Cette requête signifie bon pour aller chercher les valeurs entre la date actuelle et ses 3 prochaines dates

SELECT * FROM nom_table OÙ columName ENTRE CURDATE() ET DATE_ADD (CURDATE(), INTERVALLE 3 DAY)

Cela ajoutera éventuellement 3 jours supplémentaires de tampon à la date actuelle.

Questions connexes