You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SELECT DISTINCT提取SQL中带时间戳的唯一日期?

提取唯一日期部分的SQL解决方案

核心思路是将带时间的日期值转换为纯日期类型,或截取字符串中的日期片段,再通过SELECT DISTINCT获取唯一结果。以下是不同数据库的具体实现:

Oracle

针对DATE/TIMESTAMP类型列

使用TRUNC()函数截断时间部分,保留纯日期:

SELECT DISTINCT TRUNC(your_datetime_column) AS unique_date
FROM your_table;

针对字符串类型列(如VARCHAR2)

直接截取前9位字符获取日期部分:

SELECT DISTINCT SUBSTR(your_string_column, 1, 9) AS unique_date
FROM your_table;

MySQL

针对DATETIME/TIMESTAMP类型列

用DATE()函数提取日期:

SELECT DISTINCT DATE(your_datetime_column) AS unique_date
FROM your_table;

针对字符串类型列

两种方式可选:

  • 直接截取字符串:
SELECT DISTINCT SUBSTRING(your_string_column, 1, 9) AS unique_date
FROM your_table;
  • 先转为日期类型再提取(更适配格式不一致的场景):
SELECT DISTINCT DATE(STR_TO_DATE(your_string_column, '%d-%b-%y %H.%i.%s.%f')) AS unique_date
FROM your_table;

SQL Server

针对DATETIME/DATETIME2类型列

通过CAST或CONVERT转换为DATE类型:

-- 使用CAST
SELECT DISTINCT CAST(your_datetime_column AS DATE) AS unique_date
FROM your_table;

-- 使用CONVERT
SELECT DISTINCT CONVERT(DATE, your_datetime_column) AS unique_date
FROM your_table;

针对字符串类型列

用LEFT()函数截取前9位:

SELECT DISTINCT LEFT(your_string_column, 9) AS unique_date
FROM your_table;

如果之前尝试DATE函数未成功,大概率是因为目标列是字符串类型而非日期类型,此时优先选择字符串截取或先转换为日期类型再处理更可靠。

内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:57:04