SQL

使用DB Browser for SQLite从一种日期格式转换为另一种日期格式

发布于 2021-04-15 10:21:44

我正在寻找使用SQL将一种日期格式转换为另一种格式。我正在使用用于SQLite的数据库浏览器,日期存储在“ TEXT”类型的列中。

这是当前格式的2个示例:

2017/4/17上午9:09:09

2017/10/4下午10:21:13

请注意,在当前的日期,月份和小时格式中,如果只有一位数字,则当前不会以前导“
0”填充。他们也把月份放在第一位,然后是日期,然后是年份。这两个示例应转换为YYYY-MM-DD HH:MM:SS(24小时)格式:

IE

4/17/2017 9:09:09 AM-> 2017-04-17 09:09:09

2017/10/4下午10:21:13-> 2017-10-04 22:21:13

等等。

如果有人可以为我提供SQL查询,该查询可以将列中的所有值(如第一种格式)转换为第二种格式,将不胜感激。谢谢!

关注者
0
被浏览
88
1 个回答
  • 面试哥
    面试哥 2021-04-15
    为面试而生,有面试问题,就找面试哥。

    因此,我对python不太了解,因此不得不使用“ instr()和substr()命令的淫秽链”。这是一团糟,但现在似乎可以使用了。

    instr(DATE,'/') 用于查找第一个“ /”的位置

    length (rtrim(DATE, 'PMA0123456789: ')) 用于查找第二个“ /”的位置

    instr(DATE, ':') 用于查找第一个’:’的位置

    下面是我创建的烂摊子:D

    UPDATE testtable
    SET DATE = 
    substr (DATE, length (rtrim(DATE, 'PMA0123456789: '))+1,4) || '-' ||
    CASE instr(DATE, '/')
        WHEN 2 THEN
            '0' 
        ELSE ''
    END 
    || substr (DATE,1,instr(DATE,'/')-1) || '-' ||
    CASE (length (rtrim(DATE, 'PMA0123456789: '))) - instr(DATE,'/')
        WHEN 2 THEN
            '0' 
        ELSE '' 
    END 
    || substr (DATE,instr(DATE,'/')+1, length (rtrim(DATE, 'PMA0123456789: ')) - instr(DATE,'/')-1)
    || ' ' || 
    CASE substr(DATE,length(DATE)-1,2)
        WHEN 'AM' THEN
            CASE substr(DATE, instr(DATE, ':')-2,2)
                WHEN '12' then
                    '00'
                ELSE
                    CASE substr(DATE, instr(DATE, ':')-2, 1)
                        WHEN ' ' THEN 
                            '0'
                        ELSE
                            substr(DATE, instr(DATE, ':')-2,1)  
                    END
                    || substr(DATE, instr(DATE, ':')-1,1) 
            END
        WHEN 'PM' THEN
            CASE substr(DATE, instr(DATE, ':')-2,2) 
                WHEN '12' THEN
                    substr(DATE, instr(DATE, ':')-2,2) 
                ELSE
                    CAST (substr(DATE,instr(DATE, ':')-2,2) AS INT) + 12 
            END
        ELSE
            'error'
    END 
    || ':' || substr(DATE,instr(DATE, ':')+1,5);
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看