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

SQL新手求助:使用TRUNC函数截断creat_DTTM列的时间部分

嘿,作为SQL新手碰到日期时间截断的问题太正常了!我来给你梳理下不同数据库里怎么搞定creat_DTTM只留日期的需求,这样你就能轻松基于日期做查询啦~

处理creat_DTTM列,仅保留日期部分

不同的SQL数据库有各自的函数来实现截断时间、提取日期的效果,下面是几种最常用场景的解决方案:

MySQL/MariaDB

直接用DATE()函数就能提取日期部分,简单粗暴:

-- 查询时只返回日期
SELECT DATE(creat_DTTM) AS creat_date
FROM your_table_name;

-- 基于日期筛选记录(比如找2024-05-20的所有数据)
SELECT *
FROM your_table_name
WHERE DATE(creat_DTTM) = '2024-05-20';

PostgreSQL

有两种常用方式,要么直接把字段转成DATE类型,要么用DATE_TRUNC()截断到天:

-- 方法1:直接转换为DATE类型
SELECT creat_DTTM::DATE AS creat_date
FROM your_table_name;

-- 方法2:用DATE_TRUNC精准截断到日期
SELECT DATE_TRUNC('day', creat_DTTM)::DATE AS creat_date
FROM your_table_name;

-- 筛选特定日期的记录
SELECT *
FROM your_table_name
WHERE creat_DTTM::DATE = '2024-05-20';

SQL Server

用CAST()或者CONVERT()都能把datetime类型转成DATE:

-- 用CAST转换
SELECT CAST(creat_DTTM AS DATE) AS creat_date
FROM your_table_name;

-- 或者用CONVERT(可以指定格式,但转DATE不需要)
SELECT CONVERT(DATE, creat_DTTM) AS creat_date
FROM your_table_name;

-- 查询特定日期的数据
SELECT *
FROM your_table_name
WHERE CAST(creat_DTTM AS DATE) = '2024-05-20';

Oracle

用TRUNC()函数,指定'DD'参数就能截断到日期:

-- 提取日期部分
SELECT TRUNC(creat_DTTM, 'DD') AS creat_date
FROM your_table_name;

-- 筛选特定日期的记录(注意要把字符串转成日期类型)
SELECT *
FROM your_table_name
WHERE TRUNC(creat_DTTM, 'DD') = TO_DATE('2024-05-20', 'YYYY-MM-DD');

小提示:如果以后经常要基于这个日期做查询,建议给转换后的表达式创建函数索引,能大幅提升查询速度哦!比如在MySQL里可以这么建:

CREATE INDEX idx_creat_date ON your_table_name (DATE(creat_DTTM));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:15:18