【问题标题】:Get only date from datetime sql without converting to varchar so that I can sort it in excel仅从 datetime sql 获取日期而不转换为 varchar,以便我可以在 excel 中对其进行排序
【发布时间】:2013-08-01 16:33:49
【问题描述】:

目前 sql 返回日期为 2013-07-01 00:00:00.000。 我只想要 mm/dd/yyyy 格式的日期部分,这样当我将其导出到 excel 时,我仍然可以根据升序或降序进行排序。 我尝试了 varchar,但它没有在 excel 中排序。

【问题讨论】:

    标签: sql-server sql-server-2008 excel tsql


    【解决方案1】:

    您可以转换为 DATE,但 Excel 可能会将其显示为数字,不确定。

    SELECT CONVERT(DATE, col) FROM dbo.table;
    

    否则你可以使用特定的样式,例如

    -- yyyy-mm-dd - standard, unambiguous format
    SELECT CONVERT(CHAR(10), col, 120) FROM dbo.table;
    

    或者

    -- mm/dd/yyyy - ambiguous, regional format
    SELECT CONVERT(CHAR(10), col, 101) FROM dbo.table;
    

    【讨论】:

    • @user1733271 是的,您的评论只是确认,还是有问题?
    • 如果我使用 CHAR,它不会让我在 excel 中根据日期排序
    • 所以在 Excel 中突出显示该列并告诉它这是一个日期。
    • 我想要 mm/dd/yyyy 格式
    • 如果您不告诉 Excel 这是一个日期,您认为 mm/dd/yyyy 会神奇地按日期排序?对于 mm/dd/yyyy,它可能仍会作为字符串进行排序,有 2012 年 1 月、2013 年 1 月、2012 年 2 月、2013 年 2 月是否有意义?
    【解决方案2】:

    要格式化为mm/dd/yyyy,请使用格式101转换为VARCHAR

    SELECT CONVERT(VARCHAR, GETDATE(), 101);
    
    > 08/01/2013
    

    An SQLfiddle.

    【讨论】:

      【解决方案3】:

      尝试使用CAST 约会:

      SELECT Cast('2013-07-01 00:00:00.000' AS DATE) 
      

      【讨论】:

        【解决方案4】:

        适用于 dd/mm/yyyy 格式 使用 103 IE。 SELECT CONVERT(VARCHAR(10), COL_Name, 103);

        2016 年 8 月 24 日

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-31
          • 1970-01-01
          • 2010-10-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多