GETDATE() 返回当前系统日期和时间,精度约3.33毫秒,常用于记录数据操作时间、设置默认值及时间计算;可结合 DATEADD、DATEDIFF 使用,返回 DATETIME 类型,适用于 SQL Server 环境。

GETDATE() 函数用于返回当前数据库系统的日期和时间,精确到大约3.33毫秒。它属于SQL Server中的系统函数,常用于记录数据插入或修改的时间、计算时间差等场景。
GETDATE() 的基本语法
使用 GETDATE() 非常简单,不需要任何参数:
SELECT GETDATE();
执行这条语句会返回类似以下格式的结果:
2025-04-05 14:30:25.780
这是当前服务器的日期和时间,包含年、月、日、时、分、秒和毫秒。
在INSERT语句中使用GETDATE()
常见的用途是在插入数据时自动记录创建时间:
INSERT INTO Orders (OrderName, CreateTime) VALUES (‘订单A’, GETDATE());
这样,CreateTime 字段就会保存数据写入时的系统时间。
也可以用于定义表结构时设置默认值:
CREATE TABLE Logs (
LogID INT IDENTITY(1,1),
Message NVARCHAR(200),
LogTime DATETIME DEFAULT GETDATE()
);
当插入数据不指定 LogTime 时,系统会自动填入当前时间。
与时间计算结合使用
GETDATE() 可以配合 DATEADD、DATEDIFF 等函数进行时间操作:
- 获取一小时后的时间:
SELECT DATEADD(HOUR, 1, GETDATE()); - 计算两个时间之间的天数差:
SELECT DATEDIFF(DAY, ‘2025-01-01’, GETDATE()); - 筛选最近7天的数据:
SELECT * FROM Events WHERE EventTime >= DATEADD(DAY, -7, GETDATE());
注意事项
GETDATE() 返回的是 DATETIME 类型,如果你需要更高精度(如纳秒级),可以考虑使用 SYSUTCDATETIME() 或 SYSDATETIME(),它们返回 DATETIME2 类型。
另外,GETDATE() 获取的是数据库服务器本地时间,如果应用部署在多个时区,建议统一使用 UTC 时间(可用 GETUTCDATE())避免混乱。
基本上就这些。GETDATE() 是日常开发中最常用的时间函数之一,掌握它的用法对处理时间相关逻辑非常有帮助。


