我正在寻找使用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查询,该查询可以将列中的所有值(如第一种格式)转换为第二种格式,将不胜感激。谢谢!
因此,我对python不太了解,因此不得不使用“ instr()和substr()命令的淫秽链”。这是一团糟,但现在似乎可以使用了。
instr(DATE,'/') 用于查找第一个“ /”的位置
instr(DATE,'/')
length (rtrim(DATE, 'PMA0123456789: ')) 用于查找第二个“ /”的位置
length (rtrim(DATE, 'PMA0123456789: '))
instr(DATE, ':') 用于查找第一个’:’的位置
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);