当前位置:首页 > 数据库 > 正文

如何从数据库获取当前时间?

数据库获取当前时间通常使用内置函数,不同数据库系统函数不同,如 MySQL 的 NOW()CURRENT_TIMESTAMP,SQL Server 的 GETDATE(),Oracle 的 SYSDATE,SQLite 的 date('now'),这些函数直接执行即可返回服务器当前日期和时间。

常见数据库获取当前时间的方法

MySQL / MariaDB

  • 函数
    • NOW():返回当前日期和时间(格式:YYYY-MM-DD HH:MM:SS)。
    • CURDATE():仅返回当前日期(YYYY-MM-DD)。
    • CURTIME():仅返回当前时间(HH:MM:SS)。
  • 示例
    SELECT NOW();  -- 输出:2025-10-05 14:30:45

SQL Server

  • 函数
    • GETDATE():返回当前数据库系统的日期和时间。
    • SYSDATETIME():更高精度的时间(包含毫秒)。
  • 示例
    SELECT GETDATE();  -- 输出:2025-10-05 14:30:45.123

Oracle

  • 函数
    • SYSDATE:返回数据库服务器操作系统的当前日期和时间。
    • CURRENT_TIMESTAMP:带时区信息的时间戳。
  • 示例
    SELECT SYSDATE FROM DUAL;  -- 输出:05-OCT-2025 14:30:45

PostgreSQL

  • 函数
    • NOW():返回当前事务开始的时间戳(含时区)。
    • CURRENT_TIMESTAMP:功能同 NOW()
    • CURRENT_DATE / CURRENT_TIME:分别获取日期或时间。
  • 示例
    SELECT NOW();  -- 输出:2025-10-05 14:30:45+08

SQLite

  • 函数
    • CURRENT_TIMESTAMP:返回UTC时间的字符串(格式:YYYY-MM-DD HH:MM:SS)。
    • DATE('now') / TIME('now'):获取日期或时间。
  • 示例
    SELECT CURRENT_TIMESTAMP;  -- 输出:2025-10-05 06:30:45 (UTC时间)

关键注意事项

  1. 时区问题

    • 默认时间可能基于数据库服务器的系统时区(如 SYSDATE)。
    • 需显式指定时区时,可用函数如:
      • PostgreSQL:NOW() AT TIME ZONE 'Asia/Shanghai'
      • MySQL:CONVERT_TZ(NOW(), 'UTC', 'Asia/Shanghai')
  2. 函数执行时机

    • 部分函数(如 PostgreSQL 的 NOW())在事务开始时确定时间,多次调用返回相同值。
    • 实时获取需用非事务函数(如 PostgreSQL 的 CLOCK_TIMESTAMP())。
  3. 存储数据类型

    如何从数据库获取当前时间?  第1张

    • 日期时间类型因数据库而异(如 Oracle 的 DATE,MySQL 的 DATETIME),插入数据时需匹配。

应用场景示例

  1. 插入操作时间戳

    -- MySQL示例
    INSERT INTO orders (product, created_at) 
    VALUES ('Book', NOW());
  2. 条件筛选

    -- SQL Server示例
    SELECT * FROM logs 
    WHERE event_time > GETDATE() - 1; -- 查询24小时内日志

获取当前时间需根据数据库类型选择对应函数:

  • 标准函数NOW()(MySQL/PostgreSQL)、GETDATE()(SQL Server)、SYSDATE(Oracle)。
  • 时区敏感场景:显式转换时区或使用 CURRENT_TIMESTAMP
  • 高频写入场景:避免在事务中重复调用,优先使用一次获取的值。

正确使用时间函数可提升数据一致性和查询效率,建议结合官方文档测试验证。


引用说明: 参考各数据库官方文档的最佳实践:

  • MySQL 8.0 Date and Time Functions
  • SQL Server GETDATE() Documentation
  • Oracle SYSDATE Explanation
  • PostgreSQL Date/Time Functions
  • SQLite Date And Time Functions
0