我希望使用SQL将一种日期格式转换为另一种日期格式。我使用DB Browser for SQLite,日期存储在' TEXT'类型的列中。
以下是当前格式的两个示例:
2017/4/17 9:09:09
10/4/2017 10:21:13 PM
请注意,在当前日,月和小时的格式中,他们目前不会使用前导' 0'如果只有一个数字。他们也把月份放在第一天,然后放在第一天,然后是一年。 这两个例子应转换为YYYY-MM-DD HH:MM:SS(24小时)格式:
即
2017/4/17 9:09:09 AM - > 2017-04-17 09:09:09
10/4/2017 10:21:13 PM - > 2017-10-04 22:21:13
等
如果有人能为我提供一个SQL查询,可以将列中的所有值(如第一种格式)转换为第二种格式,我们将非常感激。谢谢!
答案 0 :(得分:1)
所以我不太了解python,所以不得不使用instr()和substr()命令的淫秽链。这很麻烦,但现在似乎有效。
instr(DATE,'/')
用于查找第一个' /'
length (rtrim(DATE, 'PMA0123456789: '))
用于查找第二个' /'
instr(DATE, ':')
用于查找第一个&#39; <#39;
下面是我创造的混乱: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);