Mysql 转换SQL dateTime返回0或emptyString
我尝试了一些stackOverflow解决方案,但仍然得到“1/1/1900” 在我的实际数据库中,postDate具有: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
------------
|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 ...
谢谢你的解释,我明白这是怎么回事。这个解释也很有帮助。