我有一个SQLite数据库,其中一些列是日期时间字符串,格式为1/2/2000 3:45:56 am。
是否有可以将这些值转换为类似ISO-8601格式的字符串的SQL语句(2000-01-02 03:45:56)?
(一种可能的非SQL方法是将数据库导出为CSV文件,并使用Python及其csv和datetime模块来解析列。)
答案 0 :(得分:1)
答案 1 :(得分:0)
转换另一种方式很简单:您可以使用strftime。但是这要求日期以ISO 8601格式(或Julian或Unix日期)开头。
你可以在SQL中使用字符串操作来完成它,但它会非常复杂。最简单的方法是创建一个用户定义的函数。
def fix_timestamp(timestamp):
return datetime.datetime.strptime(timestamp, '%m/%d/%Y %I:%M:%S %p') \
.strftime('%Y-%m-%d %H:%M:%S')
db = sqlite3.connect('...')
db.create_function('FixTimestamp', 1, fix_timestamp)
然后你可以UPDATE TheTable SET TheColumn = FixTimestamp(TheColumn)
。