如何通过DATE或CAST函数在SQL中剔除日期字段的时间信息?

2026-04-27 17:490阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计877个文字,预计阅读时间需要4分钟。

如何通过DATE或CAST函数在SQL中剔除日期字段的时间信息?

MySQL、PostgreSQL(14+)、SQLite 都支持 `DATE()` 函数,它直接提取时间戳中的日期部分,只保留年、月、日,不包括时间。注意,并非所有数据库都叫这个名字——例如 SQL Server 没有这个 `DATE()` 函数,使用它会导致错误 `Invalid column name 'DATE'`。

常见错误是把 DATE() 当作类型转换函数乱套,比如写成 DATE(CAST(created_at AS DATE)),纯属冗余;只要字段是 DATETIMETIMESTAMP 类型,DATE(created_at) 就够了。

  • MySQL:✅ 支持,WHERE DATE(order_time) = '2024-05-20'
  • PostgreSQL:✅ 14+ 支持,旧版需用 created_at::DATE
  • SQLite:✅ 支持,DATE('now') 也行
  • SQL Server:❌ 不支持,会提示“无法解析的函数名”

SQL Server 必须用CAST(... AS DATE)CONVERT(DATE, ...)

SQL Server 的 DATE 是一种独立数据类型,不能当函数用。想截掉时间,得显式类型转换。用 CAST 更标准,CONVERT 多一个风格参数但没必要。

阅读全文

本文共计877个文字,预计阅读时间需要4分钟。

如何通过DATE或CAST函数在SQL中剔除日期字段的时间信息?

MySQL、PostgreSQL(14+)、SQLite 都支持 `DATE()` 函数,它直接提取时间戳中的日期部分,只保留年、月、日,不包括时间。注意,并非所有数据库都叫这个名字——例如 SQL Server 没有这个 `DATE()` 函数,使用它会导致错误 `Invalid column name 'DATE'`。

常见错误是把 DATE() 当作类型转换函数乱套,比如写成 DATE(CAST(created_at AS DATE)),纯属冗余;只要字段是 DATETIMETIMESTAMP 类型,DATE(created_at) 就够了。

  • MySQL:✅ 支持,WHERE DATE(order_time) = '2024-05-20'
  • PostgreSQL:✅ 14+ 支持,旧版需用 created_at::DATE
  • SQLite:✅ 支持,DATE('now') 也行
  • SQL Server:❌ 不支持,会提示“无法解析的函数名”

SQL Server 必须用CAST(... AS DATE)CONVERT(DATE, ...)

SQL Server 的 DATE 是一种独立数据类型,不能当函数用。想截掉时间,得显式类型转换。用 CAST 更标准,CONVERT 多一个风格参数但没必要。

阅读全文