首页 > 解决方案 > 使用 CONVERT 和 DATEPART 函数在 SQL Server 2014 中加入时具有相同值的两个日期失败

问题描述

我在加入 SQL Server 2014 中的两个日期时遇到了一个非常奇怪的问题。我的 where 子句中有如下条件:-

SELECT 
    a.*, w.*
FROM
    TABLE1 a, TABLE2 w
WHERE 
    CONVERT(varchar(8), ISNULL(a.Col1,999), 112) + ' ' + CONVERT(VARCHAR, DATEPART(hh, ISNULL(a.Col1,999))) + ':' +  RIGHT('0' + CONVERT(VARCHAR, DATEPART(mi, ISNULL(a.Col1,999))), 2) 
= CONVERT(varchar(8),ISNULL(w.Col2,999),112) + ' ' + CONVERT(VARCHAR, DATEPART(hh, ISNULL(w.Col2,999))) + ':' +  RIGHT('0' + CONVERT(VARCHAR, DATEPART(mi, ISNULL(w.Col2,999))), 2) 

这里Col1inTable1Col2inTable2都是 type VARCHAR(18)

当使用CONVERTandDATEPART函数单独选择时,两者都返回相同的值,但在连接条件中使用时会失败并出现以下错误:

遇到错误 - 241从字符串转换日期和/或时间时转换失败

表 1 数据中 Col1 的示例:- “20190227 17:20:40”

任何帮助都非常感谢!

标签: sqlsql-server-2014

解决方案


推荐阅读