代码之家  ›  专栏  ›  技术社区  ›  tree em

将SQL Bigint转换为1811011439日期时间格式

  •  4
  • tree em  · 技术社区  · 6 年前

    我的日期时间行的格式如下

    1811011439
    1811011439
    1811011439
    1811011439
    1811011439
    1811011439
    

    它可以这样读

    Y. 18
    M. 11
    D. 01 
    

    在你看到的第一行

    有谁能告诉我如何把它转换成日期可读的格式吗?

    3 回复  |  直到 6 年前
        1
  •  2
  •   Sebastian Brosch Navjyot    6 年前

    要将日期时间值(存储为bigint)的字符串重新表示转换为可读格式。在这种情况下,你可以 CAST 字符串/bigint的日期部分 DATE 价值观:

    SELECT CAST(LEFT(CAST(1811011439 AS VARCHAR), 6) AS DATE)
    -- 2018-11-01
    

    我建议使用 DATETIME 列而不是 BIGINT 存储值的列类似于此。包括以下内容 SELECT 你得到所有 日期时间 价值观:

    SELECT CAST(SUBSTRING(CAST(1811011439 AS VARCHAR), 1, 6) + ' ' + SUBSTRING(CAST(1811011439 AS VARCHAR), 7, 2) + ':' + SUBSTRING(CAST(1811011439 AS VARCHAR), 9, 2) AS DATETIME)
    -- 2018-11-01 14:39:00.000
    
        2
  •  2
  •   Angel M.    6 年前

    据我所知,您的varchar格式的日期为“yymmddhhmm”,因此,最简单的方法是:

    DECLARE @TextDate AS NVARCHAR(20) = '1811011439';
    SELECT CAST(SUBSTRING(@TextDate, 1, 6) AS DATE);
    

    或者如果在一个表的字段中:

    SELECT CAST(SUBSTRING(YourField, 1, 6) AS DATE) FROM YourTable;
    
        3
  •  2
  •   Ilyes    6 年前

    我觉得你的专栏不是 BIGINT 数据类型,它是 VARCHAR 你想把日期和它分开

    SELECT CAST(LEFT('1811011439', 6) AS DATE)
    

    如果真的是 大整数 列,只需将其转换为 瓦卡尔 ,拆分它,然后 CAST 作为 DATE

    SELECT CAST(LEFT(CAST(YourColumn AS VARCHAR), 6) AS DATE)
    SELECT CAST(LEFT(YourColumn, 6) AS DATE) --It works too
    

    不过,正确的答案是使用正确的数据类型,即 DATETIME