Mysql 转换SQL dateTime返回0或emptyString

Mysql 转换SQL dateTime返回0或emptyString,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,我尝试了一些stackOverflow解决方案,但仍然得到“1/1/1900” 在我的实际数据库中,postDate具有: ------------ |postedDate| ------------ <NULL> 我需要一个看起来像这样的结果: ------------ |postedDate| ------------ 0 ------------ |postedDate| ------------ N/A SELECT (CASE WHEN post

我尝试了一些stackOverflow解决方案,但仍然得到“1/1/1900”

在我的实际数据库中,postDate具有:

------------
|postedDate|
------------
  <NULL>
我需要一个看起来像这样的结果:

------------
|postedDate|
------------
     0
------------
|postedDate|
------------
    N/A
SELECT (CASE WHEN postedDate IS NULL THEN '0' ELSE CAST(postedDate AS VARCHAR(MAX))) postedDate ...
或者像这样:

------------
|postedDate|
------------
     0
------------
|postedDate|
------------
    N/A
SELECT (CASE WHEN postedDate IS NULL THEN '0' ELSE CAST(postedDate AS VARCHAR(MAX))) postedDate ...

将空字符串(
'
)或
0
转换为
DATETIME
结果为最小值,这就是为什么您仍然得到
1/1/1900
。您应该
DATETIME
转换为
VARCHAR

SELECT
    PostedDate = CASE 
                    WHEN PostedDate IS NULL THEN 'N/A'
                    ELSE CONVERT(PostedDate, VARCHAR(10), 101)

SQL结果是类型化的。0不是日期,但可以转换为日期(1/1/1900)。如果希望结果中包含0,则必须让SQL返回字符串而不是日期。可以通过将日期强制转换为字符串来执行此操作,如下所示:

------------
|postedDate|
------------
     0
------------
|postedDate|
------------
    N/A
SELECT (CASE WHEN postedDate IS NULL THEN '0' ELSE CAST(postedDate AS VARCHAR(MAX))) postedDate ...

谢谢你的解释,我明白这是怎么回事。这个解释也很有帮助。