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

在SSMS中如何将DATETIME转换为DATE以实现跨表日期匹配?

跨表Datetime字段按日期等值匹配的解决方法

针对你遇到的一个表Datetime带具体时间、另一个表Datetime为零点的匹配问题,核心是把两个字段都转换为纯日期格式后再做等值判断,下面分几种常见SQL数据库给出具体写法:

SQL Server

用CAST()或CONVERT()函数将Datetime转成Date类型,自动剔除时间部分:

SELECT t1.*, t2.*
FROM 你的表1 t1
INNER JOIN 你的表2 t2 
  ON CAST(t1.带时间的日期字段 AS DATE) = CAST(t2.零点日期字段 AS DATE)

MySQL/MariaDB

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

SELECT t1.*, t2.*
FROM 你的表1 t1
INNER JOIN 你的表2 t2 
  ON DATE(t1.带时间的日期字段) = DATE(t2.零点日期字段)

Oracle

用TRUNC()函数把Datetime的时间部分截断到零点,或者用CAST()转成Date类型:

SELECT t1.*, t2.*
FROM 你的表1 t1
INNER JOIN 你的表2 t2 
  ON TRUNC(t1.带时间的日期字段) = TRUNC(t2.零点日期字段)

小提示

如果查询的数据集非常大,直接在字段上用函数可能会导致索引失效拖慢速度。如果是长期定期提取的需求,可以考虑给转换后的日期值建立计算列索引,或者在表中新增一个单独的Date类型字段存储日期部分。但如果是临时提取数据,直接用上面的写法就足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:39:19