我想将日期从整数格式迁移到 DATETIME。
我在旧数据库中的日期具有以下格式:
olddb.table.date = 20131114 (INT) olddb.table.time = 900 (INT)(上午 9 点,24 小时制)
新数据库:
newdb.table.datetime = 2013-11-14 9:00:00 (DATETIME)
我将如何使用纯 SQL 迁移它?
我想将日期从整数格式迁移到 DATETIME。
我在旧数据库中的日期具有以下格式:
olddb.table.date = 20131114 (INT) olddb.table.time = 900 (INT)(上午 9 点,24 小时制)
新数据库:
newdb.table.datetime = 2013-11-14 9:00:00 (DATETIME)
我将如何使用纯 SQL 迁移它?
SELECT CAST(CONCAT(DATE(olddb.table.date),' ',TIME(olddb.table.time*100)) AS DATETIME);
STR_TO_DATE
您可以使用(MySQL 文档)转换您的日期部分:
STR_TO_DATE(olddb.table.date, "%Y%m%d")
对于时间部分,您可以使用相同的功能:
STR_TO_DATE(olddb.table.time, "%h%i")
然后,您可以连接日期和时间部分并将函数应用于连接结果:
STR_TO_DATE(concatenated_value, "%Y%m%d%h%i")
在哪里concatenated_value
建造:
CONCAT(olddb.table.date, olddb.table.time)
试试这个:
cast(
concat(
table.date div 10000, '-',
lpad((table.date mod 10000) div 100, 2, '0'), '-',
lpad(table.date mod 100, 2, '0'), ' ',
table.time div 100, ':',
lpad(table.time mod 100, 2, '0'))
as datetime)
这是一个工作示例: