Je suis un gars MySQL travaillant sur un projet SQL Server, essayant d'obtenir un champ datetime pour afficher l'heure actuelle. Dans MySQL, j'utiliserais NOW () mais il n'accepte pas cela.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
Je suis un gars MySQL travaillant sur un projet SQL Server, essayant d'obtenir un champ datetime pour afficher l'heure actuelle. Dans MySQL, j'utiliserais NOW () mais il n'accepte pas cela.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
Réponses:
getdate()
ou getutcdate()
.
getdate()
est l'équivalent direct, mais vous devez toujours utiliser les heures UTC
getutcdate()
si votre application fonctionne sur plusieurs fuseaux horaires ou non - sinon vous courez le risque de bousiller les calculs de date lors des transitions printemps / automne
SYSDATETIME()
et SYSUTCDATETIME()
sont les équivalents DateTime2 de
qui renvoient un DateTime .
DateTime2 est désormais la méthode préférée pour stocker la date et l'heure dans SQL Server 2008+. Voir la publication StackOverflow suivante .
Vous pouvez également utiliser CURRENT_TIMESTAMP
, si vous souhaitez être plus conforme à ANSI (bien que si vous portez du code entre des fournisseurs de bases de données, ce sera le moindre de vos soucis). C'est exactement la même chose que GetDate()
sous les couvertures (voir cette question pour plus d'informations).
Il n'y a cependant pas d'équivalent ANSI GetUTCDate()
, qui est probablement celui que vous devriez utiliser si votre application fonctionne dans plusieurs fuseaux horaires ...
CURRENT_TIMESTAMP
parce que ça marche dans MySQL, SQL Server, Oracle ... Comme vous l'avez dit, c'est le moindre de nos soucis mais ça aide toujours.