En code VB.net, je crée des requêtes avec des paramètres SQL. Si je mets un paramètre DateTime à la valeur DateTime. Maintenant, à quoi ma demande ressemblera-t-elle?
UPDATE table SET date = "2010/12/20 10:25:00";
ou
UPDATE table SET date = GETDATE();
Dans le premier cas, je suis sûr que chaque enregistrement sera réglé exactement au même moment. Dans le second cas, cela dépend de la façon dont le SGBD traite la demande. Ce qui m'amène à la deuxième question: SQL Server définit-il les mêmes date et heure lors de la mise à jour d'une grande table avec NOW ()?
EDIT: a remplacé NOW () (qui n'existe pas dans SQL Server) par GETDATE ().
En SQL, vous devez utiliser GETDATE()
:
UPDATE table SET date = GETDATE();
Il n'y a pas de fonction NOW()
.
Pour répondre à ta question:
Dans une grande table, étant donné que la fonction est évaluée pour chaque ligne, vous obtiendrez des valeurs différentes pour le champ mis à jour.
Donc, si votre exigence est de régler tout à la même date, je ferais quelque chose comme ceci (non testé):
DECLARE @currDate DATETIME;
SET @currDate = GETDATE();
UPDATE table SET date = @currDate;
Une alternative à GETDATE () est CURRENT_TIMESTAMP. Fait exactement la même chose.
Utilisez GETDATE ()
Renvoie l'horodatage système actuel de la base de données sous la forme d'une valeur datetime sans le décalage du fuseau horaire de la base de données. Cette valeur est dérivée du système d'exploitation de l'ordinateur sur lequel l'instance de SQL Server est en cours d'exécution.
UPDATE table SET date = GETDATE()