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

如何在AIRPORT表中仅比较日期而非时间来匹配两列

仅比较日期忽略时间的SQL查询方案

给定表AIRPORT,包含Arriving和Departure两列,数据如下:

ArrivingDeparture
01-04-22 12:00:0001-04-22 12:00:00
01-04-22 12:00:0001-04-22 12:00:00
01-04-22 12:00:0001-04-22 16:00:00

直接使用select * from airport where arriving= departure只能匹配时间完全一致的前两行,要获取所有日期相同的行,需忽略时间部分进行比较,以下是不同数据库的实现方案:

各数据库具体实现

MySQL/MariaDB

使用DATE()函数提取日期部分:

SELECT * FROM AIRPORT WHERE DATE(Arriving) = DATE(Departure);

SQL Server

通过CAST或CONVERT将字段转换为DATE类型(仅保留日期):

-- CAST 方式
SELECT * FROM AIRPORT WHERE CAST(Arriving AS DATE) = CAST(Departure AS DATE);

-- CONVERT 方式
SELECT * FROM AIRPORT WHERE CONVERT(DATE, Arriving) = CONVERT(DATE, Departure);

Oracle

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

SELECT * FROM AIRPORT WHERE TRUNC(Arriving) = TRUNC(Departure);

PostgreSQL

两种常用方式:

-- 方式1:DATE_TRUNC 截断到天
SELECT * FROM AIRPORT WHERE DATE_TRUNC('day', Arriving) = DATE_TRUNC('day', Departure);

-- 方式2:直接转换为DATE类型
SELECT * FROM AIRPORT WHERE Arriving::DATE = Departure::DATE;

核心逻辑

所有方案的本质都是提取日期时间字段的纯日期部分,再对这两个日期值进行比较,从而忽略时间差异,匹配所有日期相同的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:53:34