2011-08-09 4 views
16

J'ai un champ qui quand quelque chose est inséré je veux qu'il obtienne la date actuelle & Temps et insérez-le dans la base de données. Y at-il un moyen d'obtenir l'heure & et le définir comme valeur par défaut?Horodatage de date par défaut SQL Server?

Actuellement, la valeur par défaut est: (getdate()) qui définit uniquement la date. Comment puis-je également régler l'heure?

+0

Vous devez spécifier quelle implémentation de SQL vous utilisez ... – JNK

+1

@JNK: avez-vous créé une macro pour cela aussi? – VoodooChild

+1

@voodoo pas encore mais je suis proche – JNK

Répondre

26

GETDATE() est une date et une heure dans SQL Server.

Exécutez SELECT GETDATE() pour vérifier cela.

Quel est le type de données de votre champ? Si c'est DATE alors il ne tiendra pas non plus de valeurs de temps.

+1

+1: GetDate obtient aussi l'horodatage! – VoodooChild

+0

Que faire si vous ne voulez pas utiliser l'heure actuelle? – Amicable

+0

La question concerne le retour de la date et de l'heure actuelles. Qu'est-ce que vous voulez exactement/ – JNK

2

SYSDATETIME() obtiendrez la date et l'heure actuelle.

Assurez-vous que le type de données de la colonne est datetime et pas seulement date ou qu'il ne pourra pas contenir de date/heure.

0

La plupart des implémentations SQL (moteurs) ont la fonction CURRENT_TIMESTAMP.

4

Un moyen facile est de donner le champ une contrainte par défaut:

create table YourTable 
    (
    ... other columns ... 
    CreateDt datetime default getdate(), 
    ... other columns ... 
    ) 

Un inconvénient de cette méthode est que vous pouvez remplacer la valeur en spécifiant dans une clause insert.

3

Personnellement, je voudrais utiliser GETUTCDATE() à la place de GETDATE() pour éviter les confusions.

+2

Je recommanderais soit. Il est très difficile de se débarrasser de l'heure locale si vous l'utilisez. –