信息发布→ 登录 注册 退出

SQL 日期函数如何获取当天开始时间?

发布时间:2025-10-13

点击量:
不同数据库获取当天开始时间的方法各异,核心是截断时间部分。MySQL用DATE()或CAST;SQL Server推荐CONVERT或DATEADD+DATEDIFF;Oracle使用TRUNC(SYSDATE);跨平台可采用日期转字符串后拼接'00:00:00'的方式实现。

在 SQL 中获取当天开始时间(即当天 00:00:00)的方法因数据库类型而异,但核心思路是将当前日期的时间部分截断或重置为零。以下是几种常见数据库的实现方式。

使用 DATE() 或 CAST 函数(MySQL)

MySQL 中可以通过 DATE() 提取日期部分,再转换为 datetime 类型来获得当天开始时间:

  • SELECT DATE(NOW())
  • SELECT CAST(CURDATE() AS DATETIME)
  • SELECT STR_TO_DATE(DATE(NOW()), '%Y-%m-%d')

这三条语句都会返回类似 2025-04-15 00:00:00 的结果。

使用 CONVERT 或 DATEADD(SQL Server)

SQL Server 常用 CONVERT 或结合 DATEADDDATEDIFF 来清空时间部分:

  • SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()))
  • SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

第一种更直观,第二种效率更高,尤其适合大数据量查询。

使用 TRUNC(Oracle)

Oracle 提供了 TRUNC 函数,可直接将日期时间截断到天级别:

  • SELECT TRUNC(SYSDATE) FROM dual
  • 默认行为就是归零时间部分,返回当天 00:00:00。

    通用方法:日期转字符串再拼接(跨平台兼容)

    如果需要兼容多种数据库,可以先提取日期字符串,再拼接 '00:00:00':

  • SELECT CAST(CAST(GETDATE() AS DATE) AS DATETIME)
  • -- 或 MySQL 写法:SELECT CONCAT(CURDATE(), ' 00:00:00')
  • 这种方法逻辑清晰,便于理解,适合初学者使用。

    基本上就这些常用方式。选择哪种取决于你使用的数据库系统和性能要求。关键是理解“开始时间”本质是“日期部分 + 时间归零”。

    标签:# 当天  # 于你  # 第一种  # 第二种  # 转换为  # 哪种  # 可直接  # 几种  # 更高  # 可以通过  # mysql  # 数据库  # 字符串  # date  # select  # sql  # datediff  # 大数据  # oracle  
    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!