Sql 如果为空值,则将datetime强制转换为字符串-保留原始datetime格式

Sql 如果为空值,则将datetime强制转换为字符串-保留原始datetime格式,sql,sql-server,datetime,isnull,Sql,Sql Server,Datetime,Isnull,我的查询有以下部分: ISNULL(cast(fd.decision_date as varchar(20)), 'PENDING') as facility, ISNULL(cast(cd.decision_date as varchar(20)), 'PENDING') as corporate, ISNULL(cast(cb.creation_date as varchar(20)), 'PENDING') as billing 我的值最初是datetime数据类型,但如果值为NULL,

我的查询有以下部分:

ISNULL(cast(fd.decision_date as varchar(20)), 'PENDING') as facility,
ISNULL(cast(cd.decision_date as varchar(20)), 'PENDING') as corporate,
ISNULL(cast(cb.creation_date as varchar(20)), 'PENDING') as billing
我的值最初是datetime数据类型,但如果值为NULL,我要做的是返回单词'PENDING'

使用上面的代码,我的结果被
cast
ed转换为
varchar
,从而返回如下内容:

Aug 20 2013 9:35AM 
而不是
2013-08-20 09:35:54


建议将不胜感激。

演员阵容
替换为
转换
和适当的风格:,例如:

与其使用
cast(…as varchar(20))
,不如使用带有样式号的
convert
,这正是它的用途

SELECT CONVERT(CHAR(19), GETDATE(), 120);
因此,您的查询变成:

COALESCE(CONVERT(CHAR(19), fd.decision_date, 120), 'PENDING') as facility,
COALESCE(CONVERT(CHAR(19), cd.decision_date, 120), 'PENDING') as corporate,
COALESCE(CONVERT(CHAR(19), cb.creation_date, 120), 'PENDING') as billing
COALESCE(CONVERT(CHAR(19), fd.decision_date, 120), 'PENDING') as facility,
COALESCE(CONVERT(CHAR(19), cd.decision_date, 120), 'PENDING') as corporate,
COALESCE(CONVERT(CHAR(19), cb.creation_date, 120), 'PENDING') as billing