Sql server 带CONVERT的ISNULL

Sql server 带CONVERT的ISNULL,sql-server,Sql Server,因此,我有一个左连接查询,如果另一个表中没有等价项,一些字段将返回NULL(类型为DateTime)。我想将NULL替换为“X-text” 我尝试使用ISNULL,但收到一个错误 CONVERT(VARCHAR(10), ISNULL(column_name,'X-test'), 110) AS [MM-DD-YYYY] 错误是: 从字符串转换日期和/或时间时,转换失败 我试图将ISNULL放在CONVERT之外,但我开始收到一个错误,关于ISNULL需要两个参数(它已经有了)。您希望如何将“

因此,我有一个
左连接
查询,如果另一个表中没有等价项,一些字段将返回
NULL
(类型为DateTime)。我想将NULL替换为“X-text”

我尝试使用ISNULL,但收到一个错误

CONVERT(VARCHAR(10), ISNULL(column_name,'X-test'), 110) AS [MM-DD-YYYY]
错误是:

从字符串转换日期和/或时间时,转换失败


我试图将ISNULL放在CONVERT之外,但我开始收到一个错误,关于ISNULL需要两个参数(它已经有了)。

您希望如何将“X-test”转换为datetime?问题就在那里。您应该在转换为varchar后执行此操作:

select
ISNULL( CONVERT(VARCHAR(10), column_name, 110),'X-test') AS [MM-DD-YYYY]
from myTable;

您希望如何将“X-test”转换为日期时间?问题就在那里。您应该在转换为varchar后执行此操作:

select
ISNULL( CONVERT(VARCHAR(10), column_name, 110),'X-test') AS [MM-DD-YYYY]
from myTable;

根据,结果类型是指定列的结果类型,因此当列值为
NULL
时,SQL Server会尝试将
x-test
转换为datetime。我怀疑@Zkai遗漏了这一点。@CetinBasoz,不,你说“你希望如何将‘X-test’转换为datetime”。我添加了文档参考以解释为什么SQL server会尝试将“X-test”转换为datetime,这是Zkai不知道的,并导致了这个问题。@DanGuzman,好的,我看到您喜欢使用文档中的文字:)根据,结果类型是指定列的结果类型,因此当列值为
NULL
时,SQL Server会尝试将
x-test
转换为datetime。我怀疑@Zkai遗漏了这一点。@CetinBasoz,不,你说“你希望如何将‘X-test’转换为datetime”。我添加了文档参考,以解释为什么SQL server会尝试将“X-test”转换为日期时间,这是Zkai不知道的,并导致了这个问题。@DanGuzman,好的,我看到您喜欢使用文档中的文字:)