2008-10-02 5 views
0

J'ai besoin d'un moyen de mettre à jour la valeur du mois sur un champ dateTime dans ma base de données. Je suis passé une valeur int pour le mois et je dois l'utiliser pour la mise à jour. Est-il possible de faire cela dans l'instruction sql ou est-ce que je ferais mieux de le faire dans C# dans le webservice?Mettre à jour la valeur Month sur datefield dans MS SQL 2005

+0

est le nombre entier que vous êtes passé la nouvelle valeur de mois, ou une augmentation? – Dana

+0

S'il vous plaît poster votre code. –

Répondre

2

Maj enfoncée, puis à nouveau:

UPDATE table 
SET datecol = DATEADD(m, @newmonth, DATEADD(m, -MONTH(datecol), datecol)) 
WHERE id = @id 

ou, plus simplement:

UPDATE table 
SET datecol = DATEADD(m, @newmonth - MONTH(datecol), datecol) 
WHERE id = @id 
+0

Merci, je reçois ce message d'erreur si. La sous-requête a renvoyé plus de 1 valeur. Ceci n'est pas autorisé lorsque la sous-requête suit =,! =, <, <= , >,> = ou lorsque la sous-requête est utilisée comme une expression. La déclaration a été terminée. – user17510

+0

Vous devez poster votre code, ma requête n'a rien à voir avec ça, car elle contient des sous-requêtes. –

+0

C'est ce que j'ai. DECLARE @newMonth int SET @newMonth = 5 MISE À JOUR dbo.tb_bookings SET startDateTime = DATEADD (mois, @newMonth - DATEPART (mois, startDateHeure), startDateTime) WHERE requestPackID = '383'; – user17510

1

Vous pouvez faire tout cela dans TSQL dans Sql Server. Découvrez les fonctions DateDiff et DateAdd.

Je me attends cela fonctionnerait:

DECLARE @newMonth int 
SET @newMonth = 5 --As an example 

UPDATE dbo.TheTable 
SET DateField = DATEADD(month, @newMonth - DATEPART(month, DateField) , DateField) 
+0

Merci cependant j'ai besoin de mettre à jour plusieurs lignes et j'ai des erreurs concernant la sous-requête renvoyant plus d'une valeur. – user17510

+0

Il n'y a pas de sous-requêtes dans cet exemple et cela fonctionnera correctement lors de la mise à jour de plusieurs lignes dans une table. Vous pouvez publier le code spécifique avec lequel vous rencontrez des problèmes. – akmad

Questions connexes