2010-12-20 2 views
57

Dans le code VB.net, je crée des demandes avec des paramètres SQL. J'ai mis un paramètre DateTime à la valeur DateTime.Now, à quoi ressemblera ma requête?Définir un champ de base de données DateTime sur "Maintenant"

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 dossier sera réglé sur le même temps. 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 la même date et l'heure lors de la mise à jour d'une grande table avec NOW()?

EDIT: remplacé maintenant() (qui n'existe pas dans SQL Server) par GETDATE().

Répondre

111

Dans SQL vous devez utiliser GETDATE():

UPDATE table SET date = GETDATE(); 

Il n'y a pas de fonction NOW().


Pour répondre à votre question:

Dans une grande table, puisque la fonction est évaluée pour chaque ligne, vous finirez par obtenir des valeurs différentes pour le champ mis à jour.

Donc, si votre exigence est de mettre tout à la même date que je ferais quelque chose comme ça (non testé):

DECLARE @currDate DATETIME; 
SET @currDate = GETDATE(); 

UPDATE table SET date = @currDate; 
+0

Oops oui MAINTENANT() est Mysql, désolé. Mais les questions restent. –

+0

@Thibault Witzig - J'ai répondu dans ma mise à jour :) – Oded

+0

Ok merci. Donc, je dois être sûr de mettre la date réelle (à partir du code) dans ma demande dans GETDATE pas() Savez-vous qu'il paramètre le paramètre SQL à DateTime.Now le fera ou Si je devrais d'abord convertir la date en une chaîne, puis l'ajouter à la demande? –

6

Utilisez GETDATE()

Renvoie le système de base de données en cours horodatage en tant que valeur de date/heure sans le décalage de fuseau horaire de 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() 
16

Une alternative à GetDate() est CURRENT_TIMESTAMP. Fait exactement la même chose.

+2

'CURRENT_TIMESTAMP' est le standard SQL actuel, donc certains pourraient soutenir que c'est la syntaxe préférée. –

Questions connexes