SQL Server CURRENT_TIMESTAMP 函数17 Mar 2025 | 6 分钟阅读 如果我们想获取 SQL Server 当前运行系统的确切时间,可以使用 SQL Server 提供的 CURRENT_TIMESTAMP 函数。CURRENT_TIMESTAMP() 函数以 'YYYY-MM-DD hh:mm:ss.mmm' 格式返回计算机的当前时间戳。当我们需要记录 SQL Server 中特定表的更新或删除操作时,SQL Server CURRENT_TIMESTAMP 函数非常有用。 CURRENT_TIMESTAMP 函数的语法 CURRENT_TIMESTAMP 函数的语法如下: 在上面的语法中,CURRENT_TIMESTAMP 是函数的名称,name_of_column 可以是我们想要为列指定的任何名称,该列将显示此查询结果中的当前时间戳。CURRENT_TIMESTAMP 函数不接受任何参数。 如何在 SQL Server 中使用 CURRENT_TIMESTAMP 函数? 让我们通过一个例子来理解 CURRENT_TIMESTAMP 函数在 SQL Server 中的用法和工作原理。让我们创建一个名为 students 的表,该表包含三个列:studID、rollno 和 Name,它们的数据类型分别为 varchar、int 和 varchar。使用 CREATE TABLE 命令创建具有上述架构的表的语法是: ![]() 如图所示,我们已成功创建具有上述架构的表,即三个列,其中两个列的数据类型为 varchar,一个列的数据类型为 int。 现在,让我们向 students 表添加一些数据。在 SQL Server 中使用 INSERT 命令向 students 表添加数据的语法是: ![]() 如图像所示,我们已成功向 students 表添加了七行数据,并通过 SELECT 查询的结果可以看到相同的内容。 下一步是在 students 表上为 UPDATE 命令创建一个触发器。因此,每当在 students 表上执行 UPDATE 命令时,它都会将更新记录记录在名为 students_log 的日志表中。为了存储日志信息,首先创建一个名为 students_log 的表,该表包含三个列:old_data、new_data 和 updation_time,它们的数据类型分别为 varchar、varchar 和 datetime2。使用 CREATE TABLE 命令创建具有上述架构的表的语法是: ![]() 如上图所示,已成功创建了一个名为 students_log 的表,用于记录 students 表上的更新信息。现在,让我们创建一个名为 log_updation 的触发器,该触发器将在每次在 students 表上执行 update 命令时执行。为 students 表上的 UPDATE 命令创建触发器的语法是: ![]() 如图像所示,已成功创建了一个名为 log_update 的触发器,该触发器会将新数据、旧数据和当前时间戳添加到 students_log 表中。为了输入当前时间戳,我们使用了 SQL Server 提供的 CURRENT_TIMESTAMP 函数,使用 CURRENT_TIMESTAMP 函数将当前时间戳输入 students_log 表的语法是: 现在,让我们更新 students 表中的一个值,看看数据是否会添加到 students_log 表中。更新 students 表中值的语法是: ![]() 如上图所示,当我们对 students 表执行 UPDATE 查询时,它做了两件事:第一是更新表中的 rollno 列,第二是调用 'log_updation' 触发器,该触发器使用 CURRENT_TIMESTAMP 函数将更新后的值和前一个值连同更新时间一起插入到 students_log 表中。 现在,让我们在 students 表中更新更多列并观察输出。相应的查询是: ![]() 如图所示,我们对 students 表执行了三个更新查询,输出显示了六次“1 行受影响”。显示六次是因为三次用于 students 表中的更新,三次是通过我们为 students 表的 UPDATE 命令创建的触发器插入到 students_log 表中的。 ![]() 如图所示,我们已成功更新了 students 表中三个列的 rollno,并且这些更新查询的详细信息已成功记录在 students_log 表中,我们可以看到 students_log 表中添加了三行新记录。 在 students_log 表的 updation_time 列中输入当前时间戳时,我们可以使用 default 关键字。当我们使用 default 关键字和 CURRENT_TIMESTAMP 函数时,数据将自动插入到该列中,而无需显式添加数据。使用 default 关键字和 CURRENT_TIMESTAMP 函数的语法是: 如果我们在 CURRENT_TIMESTAMP 函数中使用 default 关键字,那么为 students 表上的 UPDATE 查询创建触发器以记录该表上的所有更新操作的语法是: 先前语法和此新语法之间的区别在于 INSERT 命令。在先前版本中,我们在 studnet_log 表的 INSERT 命令中为三个列提供了三个值,但在新语法中,我们只为 studnet_log 表的三个列提供了两个值,因为我们使用了 default 关键字将当前时间戳作为 studnet_log 表的 updation_date 列的默认值。 除了使用 CURRENT_TIMESTAMP 函数,我们还可以使用 GETDATE() 函数。GETDATE() 函数与 CURRENT_TIMESTAMP 函数非常相似。CURRENT_TIMESTAMP 函数和 GETDATE() 函数之间的唯一区别是 CURRENT_TIMESTAMP 函数是 ANSI SQL 函数,而 GETDATE 是同一函数的 T-SQL 实现。它们都从 SQL Server 实例运行的计算机的操作系统派生值。 因此,如果我们使用 GETDATE() 函数来创建名为 'log_updation' 的触发器,那么它的语法将是: 使用 CURRENT_TIMESTAMP 函数和使用 GETDATE() 函数创建触发器的语法之间的唯一区别是我们在 students_log 表的 updation date 列中为数据传递的参数。 ![]() 正如我们所见,上述两个查询的输出是相同的,因此我们可以说 CURRENT_TIMESTAMP 函数和 GETDATE() 函数可以在各种 SQL Server 查询中互换使用。 所以,这是我们可以使用 CURRENT_TIMESTAMP 函数或 GETDATE() 函数的一种场景,SQL Server 提供的这两个函数可以在任何场景下使用。 因此,本文帮助我们更好地了解了 SQL Server CURRENT_TIMESTAMP 函数及其在不同场景下的用法。 |
我们请求您订阅我们的新闻通讯以获取最新更新。