在表 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
输出:ID InDtTm 1 2020-12-30 13:08:54.193 2 2020-12-30 13:08:54.193 3 2020-12-30 13:10:53.163 4 2020-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 ;
Name | ID | Location |
---|---|---|
Ankit | 234 | Delhi |
Chetan | 456 | Noida |
Khushi | 549 | Noida |
Mikesh | 654 | Delhi |
Varun | 876 | Noida |
Kapil | 650 | Delhi |
要获取每个条目的插入日期和时间作为“JoinDate”,可以使用以下查询:
SELECT Name, ID, Location, InDtTm as JoinDate FROM EmployeeTab ;
Name | ID | Location | JoinDate |
---|---|---|---|
Ankit | 234 | Delhi | 2019-11-24 10:10:53.163 |
Chetan | 456 | Noida | 2018-07-14 10:12:34.163 |
Khushi | 549 | Noida | 2019-05-04 10:15:43.163 |
Mikesh | 654 | Delhi | 2018-09-21 10:13:13.163 |
Varun | 876 | Noida | 2019-10-24 10:11:33.163 |
Kapil | 650 | Delhi | 2018-12-14 10:10:53.163 |
注意:使用此功能时有一个例外,如果有人在列 ColumnDateTime 中插入显式值,则该列将具有新插入的值而不是默认值。