我已经尝试了一些stackOverflow解决方案,但我仍然得到了#1/1 / 1900'
在我的实际数据库中,postDate有一个:
------------
|postedDate|
------------
<NULL>
我要创建一个看起来像这样的查询,认为这会返回一个&#39; 0&#39;但它并没有,我仍然会回归&#39; 1/1/1900&#39;对我有价值。
ISNULL(postedDate, CASE WHEN postedDate = '1/1/1900' THEN 0 ELSE postedDate END)
------------
|postedDate|
------------
1/1/19000
我需要一个看起来像这样的结果:
------------
|postedDate|
------------
0
或类似的东西:
------------
|postedDate|
------------
N/A
答案 0 :(得分:0)
将空字符串(''
)或0
转换为DATETIME
会产生最小值,这就是您仍然获得1/1/1900
的原因。您应该CONVERT
DATETIME
到VARCHAR
。
SELECT
PostedDate = CASE
WHEN PostedDate IS NULL THEN 'N/A'
ELSE CONVERT(PostedDate, VARCHAR(10), 101)
答案 1 :(得分:0)
输入SQL结果。 0不是日期,但可以转换为1(1/1/1900)。如果你想在结果中使用0,那么你必须让SQL返回一个字符串而不是一个日期。您可以通过将日期转换为字符串来完成此操作,如下所示:
SELECT (CASE WHEN postedDate IS NULL THEN '0' ELSE CAST(postedDate AS VARCHAR(MAX))) postedDate ...