转换SQL dateTime返回0或emptyString

时间:2015-12-11 02:59:37

标签: mysql sql sql-server sql-server-2008

我已经尝试了一些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

2 个答案:

答案 0 :(得分:0)

将空字符串('')或0转换为DATETIME会产生最小值,这就是您仍然获得1/1/1900的原因。您应该CONVERT DATETIMEVARCHAR

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 ...