【发布时间】:2026-02-04 17:00:01
【问题描述】:
我有两个包含日期的表,表 1 中的数据类型是 (datetime, null)。表 2 中的数据类型是 varchar(10)。我正在尝试编写一个查询,该查询将匹配每个表中的两个日期和标签,如果它们正确或不基于 macth。我已经复制了下面的查询,但我总是无法使用转换语法,我正在尝试获取 DD/MM/YYY。我会感谢任何人帮助我将正确的语法包裹在日期列周围。
Select TBL1.ID,
TBL1.AccountName,
TBL1.StartDate,
TBL2.StartDate,
CASE
WHEN LEFT(TBL1.StartDate,10) = TBL2.StartDate THEN 'Correct' ELSE 'Incorrect' END AS 'Date Check'
FROM TBL1
INNER JOIN TBL2 ON TB1.ID = TBL2.ID
GROUP BY TBL1.ID,
TBL1.AccountName,
TBL1.StartDate,
TBL2.StartDate
【问题讨论】:
-
您的 varchar(10) 日期以哪种格式存储
-
CONVERT(datetime,TBL1.StartDate) 而不是 LEFT(TBL1.StartDate,10)
-
您最好将 varchar 更改为日期时间以进行比较。如果该字段中的任何内容不是有效的格式日期,它将显示您。
-
为什么人们坚持将日期存储为字符串?停止那样做。
-
相信我,Aaron 我已经要求我们的 DBA 更改数据类型,但他们不会,而且他们不会允许我自己更改数据类型。
标签: sql sql-server