【问题标题】:How to convert varchar to datetime conver [closed]如何将 varchar 转换为 datetime conver [关闭]
【发布时间】:2017-10-25 06:57:06
【问题描述】:

我想将 20170426140000 转换为 2017-04-26 14:00:00

【问题讨论】:

  • 从字符串到日期时间的转换函数在各种 DBMS 中是不同的。你用的是哪个?然后,您是从用户或列中获取字符串还是从查询中获取文字?

标签: sql sql-server tsql


【解决方案1】:

您可以在Substring & Stuff 函数的帮助下实现上述结果,如下所示:-

DECLARE @DATA VARCHAR(MAX);

SET @DATA = '20170426140000';

SELECT CONVERT(DATETIME, SUBSTRING(@DATA, 1, 4)+'-'+SUBSTRING(@DATA, 5, 2)+'-'+SUBSTRING(@DATA, 7, 2)+' '+STUFF(STUFF(SUBSTRING(@DATA, 9, LEN(@data)), 3, 0, ':'), 6, 0, ':'));

结果:

2017-04-26 14:00:00.000

注意:以上为SQL Server

【讨论】:

  • 这看起来与标准 SQL 相差甚远。您似乎知道 OP 使用的是哪个 DBMS。怎么来的?它是什么?
  • @ThorstenKettner O/P 用于前面提到的 SQL Server。
  • 没有。有人为 Oracle 发布了一个答案,当他们被告知我们还不知道此请求是否针对 Oracle 时,他们将他们的(有缺陷的)Oracle 查询命名为 SQL Server,然后最终删除了答案。我们仍然不知道请求是关于哪个 DBMS。
  • @ThorstenKettner 有两个答案,前提是第一个具有提问者发布的 SQL Server 评论。
  • @ThorstenKettner Yogesh Sharma 是对的,OP 在已删除的答案下评论说,他使用 sql server。但是标签仍然丢失。
【解决方案2】:

在 SQL Server 中

DECLARE @InputText varchar(15)='20170426140000',@DateValue varchar(8),@FormattedDate varchar(50)
       SET @DateValue=LEFT(@InputText,8)
SELECT @FormattedDate =
convert(varchar(10), convert(datetime, @DateValue), 21)
+ ' ' + substring(@InputText, 9, 2)
+ ':' + substring(@InputText, 11, 2)
+ ':' + substring(@InputText, 13, 2)
SELECT @InputText AS Input,@FormattedDate AS FormattedDate

输出:

【讨论】:

    【解决方案3】:

    你可以像下面的语句那样转换它。

    SELECT FORMAT(20170426140000,'0000-00-00 00:00:00')
    

    【讨论】:

      【解决方案4】:

      以下应该可以工作(SQL-Server 2012+):

      DECLARE @strDateTime varchar(14) = '20170426140000'
      
      SELECT CONVERT(datetime,
                     FORMAT(CONVERT(bigint, @strDateTime),
                            '####-##-## ##:##:##'),
                     120)
      

      如果你只想输出字符串而不转换为日期时间:

      DECLARE @strDateTime varchar(14) = '20170426140000'
      
      SELECT FORMAT(CONVERT(bigint, @strDateTime),
                    '####-##-## ##:##:##')
      

      SQL Fiddle

      【讨论】:

        猜你喜欢
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        • 2011-06-24
        • 2021-03-26
        • 2021-06-17
        相关资源
        最近更新 更多