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