📜  在表 SQL Server 中捕获 INSERT 时间戳

📅  最后修改于: 2022-05-13 01:54:44.149000             🧑  作者: Mango

在表 SQL Server 中捕获 INSERT 时间戳

在表中插入数据时,有时我们需要捕获表中的插入时间戳。我们可以使用一种非常简单的方法来捕获表中插入行的时间戳。

在 SQL Server 中使用 DEFAULT 约束捕获表中插入行的时间戳。

创建表时使用 DEFAULT 约束:

句法:

CREATE TABLE TableName (ColumName INT, ColumnDateTime DATETIME DEFAULT CURRENT_TIMESTAMP)
GO

例子:

让我们创建一个名为“GeekTab”的表。

CREATE TABLE GeekTab (ID INT, InDtTm DATETIME DEFAULT CURRENT_TIMESTAMP) ;
GO

让我们在表中插入几个值。

INSERT INTO GeekTab (ID) VALUES (1),  (2) ; 
GO
INSERT INTO GeekTab (ID)VALUES (3), (4) ; 
GO

现在,让我们从表中选择值。

SELECT * FROM GeekTab ;
GO

输出:

IDInDtTm
12020-12-30 13:08:54.193
22020-12-30 13:08:54.193
32020-12-30 13:10:53.163
42020-12-30 13:10:53.163

结论:

当我们从表GeekTab中选择值时,我们可以看到它在表中的 InDtTm 列中具有当前时间戳。这是因为InDtTm列是使用 DATETIME DEFAULT CURRENT_TIMESTAMP 创建的。

基于场景的示例:

假设我们有“EmployeeTab”表,每当有新员工加入公司时,都会在表中插入一条新记录:

CREATE TABLE EmployeeTab (Name varchar(100), ID INT, Location varchar(100),
InDtTm DATETIME DEFAULT CURRENT_TIMESTAMP); 
SELECT  Name, ID, Location FROM EmployeeTab ;
NameID Location
Ankit234Delhi
Chetan456Noida
Khushi549Noida
Mikesh654Delhi
Varun876Noida
Kapil650Delhi

要获取每个条目的插入日期和时间作为“JoinDate”,可以使用以下查询:

SELECT  Name, ID, Location, InDtTm as JoinDate FROM EmployeeTab ;
NameIDLocationJoinDate
Ankit234Delhi2019-11-24 10:10:53.163
Chetan456Noida2018-07-14 10:12:34.163
Khushi549Noida2019-05-04 10:15:43.163
Mikesh654Delhi2018-09-21 10:13:13.163
Varun876Noida2019-10-24 10:11:33.163
Kapil650Delhi2018-12-14 10:10:53.163

注意:使用此功能时有一个例外,如果有人在列 ColumnDateTime 中插入显式值,则该列将具有新插入的值而不是默认值。