【问题标题】:How convert string to date in SQL Server?如何在 SQL Server 中将字符串转换为日期?
【发布时间】:2015-12-08 08:48:33
【问题描述】:

如何在 SQL Server 中将此字符串转换为日期?

0112151647 -> 01.12.2015 16:47:00

P.S 在 Oracle to_date('0112151647', 'ddmmrrhh24mi') call_date

我不必获取特定格式。对我来说翻译成日期很重要

【问题讨论】:

标签: sql sql-server


【解决方案1】:

据我所知,SQL Server 没有提供任何完全被 Oracle to_date 函数替换的函数。因此,您需要使用更多步骤来获得结果。下面的链接显示了 Oracle to_date 函数和 SQL Server 替换方法之间的相关性。 Here

您可能还需要使用其他一些 T-SQL 函数,例如 SubString 或其他字符串函数。 了解更多关于他们的信息here

这里有一个代码可以帮助你得到答案:

DECLARE @date AS CHAR(12) = '0112151647';
SELECT  SUBSTRING(@date, 1, 2) AS day ,
        SUBSTRING(@date, 3, 2) AS month ,
        SUBSTRING(@date, 5, 2) AS year ,
        SUBSTRING(@date, 7, 2) AS hour ,
        SUBSTRING(@date, 9, 2) AS minute ,
        CAST('20'+SUBSTRING(@date, 5, 2) + SUBSTRING(@date, 3, 2)
        + SUBSTRING(@date, 1, 2) + ' ' + ' ' + +SUBSTRING(@date, 7, 2)
        + ':' + SUBSTRING(@date, 9, 2) AS DATETIME);

【讨论】:

  • @Vahid Farahmandian 有问题的输入是:0112151647,但您错误地将输入视为 011220151647。
  • @AjaynaiduPappala 谢谢,我已经更新了我的答案。
【解决方案2】:

这样的事情应该可以解决问题。

DECLARE @Date CHAR(10);
SET @Date='0112151647';
SELECT CONVERT(datetime, '20' + SUBSTRING(@Date,5,2) + '-' + SUBSTRING(@Date,3,2) + '-' + LEFT(@Date,2) + ' ' + SUBSTRING(@Date,7,2) + ':' + RIGHT(@Date, 2), 20);

基本上,您需要将字符串重新格式化为 SQL 可以理解的格式之一(在此处列出:https://msdn.microsoft.com/en-gb/library/ms187928(v=sql.120).aspx#Anchor_3

所以我做了什么 - 只是将格式从 'ddmmrrhh24mi' 更改为 20yyyy-mm-dd hh:mi:ss(24h)

【讨论】:

    【解决方案3】:

    你可以在这里使用 STUFF():

    DECLARE @String VARCHAR(20) = '0112151647'
    
    SELECT Cast(Stuff(Stuff(Stuff(Stuff(@String, 3, 0, '.'), 6, 0, '.20'), 11, 0, '  '), 15, 0, ':') AS DATETIME) 
    

    输出:

    DATE
    2015-01-12 16:47:00.000
    

    更多信息请参考here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多