2010-07-20 78 views

回答

2

它铸造你的“”为datetime,因为你的另一列你是返回日期时间列。

SELECT CASE WHEN 1=1 THEN '' ELSE GETDATE() END 

会给你同样的价值...

您可以将此转换为VARCHAR(32),但我不能确定后果的

SELECT CASE WHEN 1=1 THEN '' ELSE CAST(GETDATE() AS varchar(32)) END 
1

列只能返回一个数据类型 - DATETIME!= string/VARCHAR。

如果要在值为NULL的情况下使用零长度字符串,则必须使用CAST/CONVERT将显式更改数据类型以将非NULL值更改为VARCHAR/etc数据类型。

3

尝试的日期转换为字符串,因此不会尝试转换'为日期:

(CASE WHEN fu.SentOutDate IS NULL THEN '' ELSE CONVERT(varchar,fu.SentOutDate) END) 
1

如果”重新检查NULL值,你可以尝试ISNULL()并将日期转换为varchar。

SELECT ISNULL(CAST(fu.SentOutDate为varchar(50)), '')AS SendOutDate FROM表名

0

这听起来像你的地方显示的GUI或客户端此值。在我看来,最好的做法是将其从NULL值转换而来,而不是在查询中。

如果您创建的数据库可以扩展到数百万用户,那么您希望尽可能在数据库中进行一些处理,并尽可能在客户端进行处理。将日期转换为字符是系统上不必要的负载(字符计算总是比数学慢得多)。

0

这可能工作:

case when ISNULL(convert(varchar, a.rec_dt, 108), '00:00:00')='00:00:00' then '' 
    else CAST(rec_dt as varchar)