将NULL日期时间转换为空白

时间:2014-10-09 15:14:08

标签: sql sql-server datetime null

我想将datetime字段转换为varchar,以便在日期为NULL时显示空白或消息。 这就是我到目前为止所做的:

select
isnull(us.Date,0) as USDate,
isnull(au.Date,0) as AUDate
from ustable us
left join autable au
on us.column=au.column

现在这显示:

USDATE 
2014-10-24 10:29:07.450
1900-01-01 00:00:00.000

我希望能够制作“1900-01-01 00:00:00.000”varchar,这样我就可以写一条消息或显示一个真正的空白。

7 个答案:

答案 0 :(得分:6)

您可以像这样使用Case AND CONVERT -

SELECT
CASE WHEN us.Date IS NULL THEN '' ELSE CONVERT(VARCHAR(30), us.Date, 121) END AS USDate,
CASE WHEN au.Date IS NULL THEN '' ELSE CONVERT(VARCHAR(30), au.Date, 121) END AS AUDate
FROM ustable us
left join autable au
on us.column=au.column

答案 1 :(得分:2)

我发现你想要完成的最简单的代码行如下。

ISNULL(CONVERT(VARCHAR(30),us.Date,121),'') as USDate,
ISNULL(CONVERT(VARCHAR(30),au.Date,121),'') as AUDate,

我已对此进行了测试并确认其有效。

答案 2 :(得分:1)

在SQL中执行此操作:

更改您的SELECT语句,以合并WHEN ... THEN条款:

CASE us.Date 
  WHEN '1900-01-01 00:00:00.000' THEN ''
  WHEN NULL THEN ''
  ELSE us.Date
END as USDate,
CASE au.Date 
  WHEN '1900-01-01 00:00:00.000' THEN ''
  WHEN NULL THEN ''
  ELSE au.Date
END as AUDate

如果您有前端代码,那么您可以在不更改SQL代码的情况下在前端实现该功能。

答案 3 :(得分:1)

给定如下定义的列:

date_of_birth datetime null

你可以简单地说

select date_of_birth = coalesce( convert(varchar(32),date_of_birth) , '' )
from some_table_with_a_nullable_datetime_column

答案 4 :(得分:1)

您可以使用NVL()函数...

  

您可以使用NVL函数来转换计算结果的表达式   为NULL到您指定的值。 NVL功能接受两个   arguments:第一个参数将表达式的名称设为   评估第二个参数指定该函数的值   当第一个参数的计算结果为NULL时返回。如果先   参数的值不为NULL,该函数返回的值   第一个论点。

例如:

select
nvl(us.Date,'') as USDate,
nvl(au.Date,'') as AUDate
from ustable us
left join autable au
on us.column=au.column

或将您想要的任何内容设置为默认值:

select
nvl(us.Date,'this was a NULL') as USDate,
nvl(au.Date,'this was a NULL') as AUDate
from ustable us
left join autable au
on us.column=au.column

答案 5 :(得分:0)

尝试这样的事情......

select
CONVERT(varchar(50), isnull(us.Date,0)) as USDate,
CONVERT(varchar(50), isnull(au.Date,0)) as AUDate
from ustable us
left join autable au
on us.column=au.column

您希望根据日期格式更改varchar的大小。此外,CONVERT采用第三个参数,允许您更改字符串的格式。

答案 6 :(得分:0)

var httpHeaders = new HttpHeaders();

httpHeaders.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);

尝试一下,它会显示列值应该为空。