J'ai une table qui collecte les formulaires soumis à partir de notre site Web, mais pour une raison quelconque, lors de la création de la table, ils n'ont pas mis d'horodatage dans la table. Je veux qu'il entre la date exacte et l'heure à laquelle l'enregistrement a été entré.
Je sais que c'est quelque part, mais je n'arrive pas à trouver comment définir la valeur par défaut (comme dans Access, vous utilisez getNow()
ou Now()
) mais je ne sais pas où le mettre. .
Pour modifier une colonne existante dans une table existante:
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn
Cela peut également être fait via l'interface graphique SSMS.
(getdate())
dans le champ Valeur ou Liaison comme indiqué ci-dessous.Dans cette table dans SQL Server, spécifiez la valeur par défaut de cette colonne: CURRENT_TIMESTAMP
. Le type de données de cette colonne peut être datetime ou datetime2.
par exemple.
_Create Table Student
(
Name varchar(50),
DateOfAddmission datetime default CURRENT_TIMESTAMP
);
_
J'espère que ça va marcher.
Alors que le réponse marquée est correct avec:
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn
Vous devez toujours être conscient des fuseaux horaires lorsque vous ajoutez des valeurs datetime par défaut dans une colonne.
Disons, par exemple, que cette valeur datetime
est conçue pour indiquer quand un membre a rejoint un site Web et que vous souhaitez que celui-ci soit affiché à nouveau à l'utilisateur, GETDATE()
vous donnera l'heure du serveur, ce qui pourrait indiquer des anomalies si l'utilisateur se trouve dans des paramètres régionaux différents de ceux du serveur.
Si vous envisagez de traiter avec des utilisateurs internationaux, il est parfois préférable d’utiliser GETUTCDATE () , ce qui:
Renvoie l'horodatage du système de base de données en cours sous la forme d'une valeur datetime. Le décalage de fuseau horaire de la base de données n'est pas inclus. Cette valeur représente l'heure UTC actuelle (temps universel coordonné). 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.
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETUTCDATE() FOR YourColumn
Lors de la récupération des valeurs, l'application/le site Web frontal doit transformer cette valeur de l'heure UTC en paramètres régionaux/de la culture de l'utilisateur qui la demande.
Désactiver Nulls sur la colonne et définir une valeur par défaut sur la colonne de getdate()
/*Deal with any existing NULLs*/
UPDATE YourTable SET created_date=GETDATE() /*Or some sentinel value
'19000101' maybe?*/
WHERE created_date IS NULL
/*Disallow NULLs*/
ALTER TABLE YourTable ALTER COLUMN created_date DATE NOT NULL
/*Add default constraint*/
ALTER TABLE YourTable ADD CONSTRAINT
DF_YourTable_created_date DEFAULT GETDATE() FOR created_date
La syntaxe pour cela lors de la création d'une nouvelle table est la suivante:
CREATE TABLE MyTable
(
MYTableID INT IDENTITY(1,1),
CreateDate DATETIME NOT NULL CONSTRAINT DF_MyTable_CreateDate_GETDATE DEFAULT GETDATE()
)
Cela fonctionne pour moi ...
ALTER TABLE [accounts]
ADD [user_registered] DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;
Cela a fonctionné pour moi. J'utilise SQL Developer avec Oracle DB:
ALTER TABLE YOUR_TABLE
ADD Date_Created TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
Cela fonctionne aussi:
CREATE TABLE Example(
...
created datetime default GETDATE()
);
Ou:
ALTER TABLE EXAMPLE ADD created datetime default GETDATE();
Pour simplifier, je vais résumer les réponses ci-dessus:
Disons que la table s'appelle Client elle a 4 colonnes/moins ou plus ...
vous voulez ajouter une nouvelle colonne à la table où chaque fois qu'il y a une insertion ..., cette colonne conserve un enregistrement de l'heure à laquelle l'événement s'est produit.
Solution:
ajouter une nouvelle colonne, disons timepurchase est la nouvelle colonne, à la table avec le type de données datetime.
Puis lancez l’alter suivant:
ALTER TABLE Customer ADD CONSTRAINT DF_Customer DEFAULT GETDATE() FOR timePurchase
Supposons que vous créez une table de base de données pour un système d'enregistrement.
IF OBJECT_ID('dbo.registration_demo', 'U') IS NOT NULL
DROP TABLE dbo.registration_demo;
CREATE TABLE dbo.registration_demo (
id INT IDENTITY PRIMARY KEY,
name NVARCHAR(8)
);
Maintenant, quelques personnes s'inscrivent.
INSERT INTO dbo.registration_demo (name) VALUES
('John'),('Jane'),('Jeff');
Ensuite, vous réalisez que vous avez besoin d’un horodatage pour leur inscription.
Si cette application est limitée à une région géographiquement localisée, vous pouvez utiliser l'heure du serveur local avec GETDATE()
. Sinon, vous devriez tenir compte de considération de Tanner pour le public global avec GETUTCDATE()
pour la valeur par défaut.
Ajoutez la colonne avec une valeur par défaut dans une instruction telle que cette réponse .
ALTER TABLE dbo.registration_demo
ADD time_registered DATETIME DEFAULT GETUTCDATE();
Trouvons un autre déclarant et voyons à quoi ressemblent les données.
INSERT INTO dbo.registration_demo (name) VALUES
('Julia');
SELECT * FROM dbo.registration_demo;
id name time_registered 1 John NULL 2 Jane NULL 3 Jeff NULL 4 Julia 2016-06-21 14:32:57.767
Dans SQLPlus lors de la création d’une table, c’est comme
SQL> Créer une table Test
( Test_ID number not null,
Test_Date date default sysdate not null );
SQL> insérer dans Test (id) valeurs (1);
Test_ID Test_Date
1 08-MAR-19