Verwenden Sie das aktuelle Datum als Standardwert für eine Spalte

79

Gibt es eine Möglichkeit, den Standardwert einer Spalte DateTime.Nowin SQL Server festzulegen?

Beispiel:

table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null

Die Linie:

Insert into Event(Description) values('teste');

sollte eine Zeile einfügen und der Datumswert sollte das aktuelle Datum sein.

dcarneiro
quelle
1
Dieser Link kann auch nützlich sein - blog.sqlauthority.com/2013/05/10/…
Steam

Antworten:

107

Fügen Sie eine Standardbedingung mit der Funktion GETDATE () als Wert hinzu.

ALTER TABLE myTable 
  ADD CONSTRAINT CONSTRAINT_NAME
    DEFAULT GETDATE() FOR myColumn
Jason
quelle
9
In PostgreSQL wäre es: "alter table myTable add column mydatecol date default now ();" .. Ich füge diesen Kommentar nur hinzu, da der SQL-Server im Titel der Frage nicht erwähnt wird.
Könnte
1
Dies ist das Formular, wenn die Spalte bereits in der Tabelle vorhanden ist, und es gibt keine Einschränkung, einen Standardwert festzulegen, wenn der Wert in INSERT-Anweisungen (oder in CURSOR-Einfügungen) weggelassen wird.
TT.
So wie das geschrieben ist, scheint das CONSTRAINTSchlüsselwort zu fehlen . Es sollte sein ... ADD CONSTRAINT MY_CONSTRAINT_NAME ...
Faust
1
Gibt GETDATE()uns die UTC-Zeit?
Zapnologica
20
CREATE TABLE Orders(
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    OrderDate date DEFAULT GETDATE() // you can set default constraints while creating the table
)
Mayuresh
quelle
3
Dieses Formular legt eine unbenannte Einschränkung fest. Es ist am besten, die Einschränkung zu benennen:[...]OrderDate DATE CONSTRAINT DF_Orders_date DEFAULT GETDATE()[...]
TT.
4

Sie können verwenden:

Insert into Event(Description,Date) values('teste', GETDATE());

Sie können Ihre Tabelle auch so ändern, dass 'Datum' den Standardwert "GETDATE ()" hat.

Blazes
quelle
3

Wählen Sie Tabellenspaltenname aus, bei dem Sie den Standardwert für das aktuelle Datum erhalten möchten

 ALTER TABLE 
 [dbo].[Table_Name]
 ADD  CONSTRAINT [Constraint_Name] 
 DEFAULT (getdate()) FOR [Column_Name]

Tabellenabfrage ändern

Alter TABLE [dbo].[Table_Name](
    [PDate] [datetime] Default GetDate())
Khalid
quelle
3

Ich bin auch auf dieses Bedürfnis für mein Datenbankprojekt gestoßen. Ich habe beschlossen, meine Erkenntnisse hier zu teilen.

1) Es gibt keine Möglichkeit zu einem NOT NULL-Feld ohne Standard, wenn bereits Daten vorhanden sind ( Kann ich eine Nicht-Null-Spalte ohne DEFAULT-Wert hinzufügen ) ?

2) Dieses Thema wurde lange angesprochen. Hier ist eine Frage aus dem Jahr 2008 ( Hinzufügen einer Spalte mit einem Standardwert zu einer vorhandenen Tabelle in SQL Server )

3) Die DEFAULT-Einschränkung wird verwendet, um einen Standardwert für eine Spalte bereitzustellen. Der Standardwert wird allen neuen Datensätzen hinzugefügt, wenn kein anderer Wert angegeben ist. ( https://www.w3schools.com/sql/sql_default.asp )

4) Das Visual Studio-Datenbankprojekt, das ich für die Entwicklung verwende, ist wirklich gut darin, Änderungsskripte für Sie zu generieren. Dies ist das Änderungsskript, das für meine DB-Heraufstufung erstellt wurde:

GO
PRINT N'Altering [dbo].[PROD_WHSE_ACTUAL]...';

GO
ALTER TABLE [dbo].[PROD_WHSE_ACTUAL]
    ADD [DATE] DATE DEFAULT getdate() NOT NULL;

- -

Hier sind die Schritte, die ich unternommen habe, um meine Datenbank mit Visual Studio für die Entwicklung zu aktualisieren.

1) Standardwert hinzufügen (Visual Studio SSDT: DB-Projekt: Tabellen-Designer) Geben Sie hier die Bildbeschreibung ein

2) Verwenden Sie das Schema-Vergleichstool, um das Änderungsskript zu generieren.

code already provided above

3) Zeigen Sie die Daten an, bevor Sie die Änderung anwenden. Geben Sie hier die Bildbeschreibung ein

4) Zeigen Sie die Daten an, nachdem Sie die Änderung übernommen haben. Geben Sie hier die Bildbeschreibung ein

SherlockSpreadsheets
quelle
1

Um das aktuelle Datum als Standard für eine Datumsspalte zu verwenden, müssen Sie:

1- offener Tischdesigner

2- Wählen Sie die Spalte aus

3- Gehen Sie zu den Spalteneigenschaften

4- Setzen Sie den Wert Standardwert oder Bindungseigentum an ( getdate () )

Geben Sie hier die Bildbeschreibung ein

Maher Ben Issa
quelle
0

Die Syntax zur Tabellenerstellung kann wie folgt aussehen:

Create table api_key(api_key_id INT NOT NULL IDENTITY(1,1) 
PRIMARY KEY, date_added date DEFAULT 
GetDate());

Die Syntax der Einfügeabfrage kann wie folgt lauten:

Insert into api_key values(GETDATE());
Sameer
quelle
0

Klicken Sie mit der rechten Maustaste auf die Tabelle und klicken Sie auf Design. Klicken Sie dann auf die Spalte, für die Sie den Standardwert festlegen möchten.

Setzen Sie dann am Ende der Seite in den Spalteneigenschaften den Standardwert oder die Bindung auf: 'getdate ()'

Mohamad Reza Shahrestani
quelle