【问题标题】:Convert and sort varchar Date dd-MMM-yyyy转换和排序 varchar Date dd-MMM-yyyy
【发布时间】:2015-06-18 02:06:02
【问题描述】:

我正在使用日期为 varchar 的表。示例日期格式: 2015 年 6 月 17 日 我尝试了以下方法将日期(dd-MMM-yyyy)转换和排序为日期时间。

SELECT date, name, author
FROM sometable
ORDER BY CONVERT(DATETIME, date, 106) DESC

我也尝试过在 select 语句中转换日期。不起作用。错误是

从字符串转换日期和/或时间时转换失败。

通过一些类似问题的转换类型,但我没有找到任何解决我所拥有格式的方法。有没有办法在日月和年之间选择分隔符?

我还浏览了此链接,其中包含datetime 格式的格式。 106 最接近我的varchar 日期。只有我在表中的日期在日月和年之间有“-”。

https://msdn.microsoft.com/en-us/library/ms187928.aspx

感谢任何帮助。

【问题讨论】:

    标签: sql-server date sql-server-2012


    【解决方案1】:

    使用 106 转换你的日期格式应该是绝对没问题的。

    但我猜你的表中包含一些无效值导致错误,尝试通过TRY_CONVERT 找出它们:

    SELECT date, name, author, TRY_CONVERT(datetime, date, 106) AS convertresult
    FROM sometable
    WHERE TRY_CONVERT(datetime, date, 106) IS NULL AND date IS NOT NULL
    

    【讨论】:

      【解决方案2】:

      我会使用日期样式113 转换为日期时间格式,如下所示:

      DECLARE @date VARCHAR(20) = '17-Jun-2015';
      
      SELECT CONVERT(VARCHAR(20),CAST(@date AS DATETIME),113)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-20
        相关资源
        最近更新 更多