Comment ajouter un Champ date / heure à + 1 jour
Dans Ma procédure stockée j'ai un StartDate et EndDate champs de type Varchar(10)
@StartDate Varchar(10),
@EndDate Varchar(10)
Je suis de donner de l'aide de l'INTERFACE utilisateur pour la date de début de la 03/01/2013 et 03/04/2013
Pour la date de fin de j'ai besoin d'Ajouter un jour + c'est si ma date de fin est 03/04/2013 j'ai besoin de mettre à Jour à 03/05/2013..
Grâce
- Vérifiez votre question. Après la mise à jour aussi vous avez mentionné le même résultat. Tu veux dire que 03/05/2013?
- Avez-vous regardé dans l'aide de DATEADD avec CONVERT?
- Est-il une raison vous n'êtes pas en utilisant le type de données de date pour cette? Ensuite, vous pouvez simplement utiliser le dateadd() pour ajouter un jour.
- Jamais, jamais, jamais, sous aucun cas stocker les dates que varchar. Cette serios défaut de conception doit être immdeiately fixe ou vous aurait mal de données dans le domaine. En plus de 30 ans de qerying bases de données à partir de nombreuses sources différentes, je n'en ai jamais vu encore utilisé varchar pour les dates qui n'ont pas de graves problèmes d'intégrité de données avec cette information.
Vous devez vous connecter pour publier un commentaire.
Si c'est une nouvelle procédure stockée (ou pas d'autres codes de l'utiliser), la meilleure chose est de changer vos variables de type Date. Parce que
if you comparing data by date
vous devriez comparerDates not varchar values
.Si vous
CAN
changer le type de variable vous pouvez ensuite ajouter un jour à l'aide deDATEADD()
fonction comme ci-dessous.Si vous
CANNOT
modifier les types de variables, il vaut mieux les passer dansISO format
(ie;yyyymmdd
) parce que votre chaîne de format est culture spécifique et de la requête peut échouer dans un serveur avec une culture différente.SET @EndDate = DATEADD (d, 1, CAST(@StartDate AS datetime))
vous donne la réponse commedatetime
. Vous pouvez ensuite convertir en arrière à un varchar si vous avez besoin de:SET @EndDate = CAST(DATEADD (d, 1, CAST(@StartDate AS datetime)) AS varchar(10))