【问题标题】:Convert SQL dateTime return 0 or emptyString [closed]转换 SQL dateTime 返回 0 或 emptyString [关闭]
【发布时间】:2016-03-16 21:16:29
【问题描述】:

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

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

------------
|postedDate|
------------
  <NULL>

我必须创建一个看起来像这样的查询,认为这会返回一个“0”,但事实并非如此,我仍然会返回一个“1/1/1900”值给我。

ISNULL(postedDate, CASE WHEN postedDate = '1/1/1900' THEN 0 ELSE postedDate END)

------------
|postedDate|
------------
 1/1/19000

我需要一个看起来像这样的结果:

------------
|postedDate|
------------
     0

或类似的东西:

------------
|postedDate|
------------
    N/A

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这个解释也很有帮助。
    【解决方案2】:

    已键入 SQL 结果。 0 不是日期,但可以转换为 1 (1/1/1900)。如果您希望结果中出现 0,则必须让 SQL 返回字符串而不是日期。您可以通过将日期转换为字符串来做到这一点,如下所示:

    SELECT (CASE WHEN postedDate IS NULL THEN '0' ELSE CAST(postedDate AS VARCHAR(MAX))) postedDate ...
    

    【讨论】:

    • 感谢您的解释,我明白这是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多