1

我想将日期从整数格式迁移到 DATETIME。

我在旧数据库中的日期具有以下格式:

olddb.table.date = 20131114 (INT) olddb.table.time = 900 (INT)(上午 9 点,24 小时制)

新数据库:

newdb.table.datetime = 2013-11-14 9:00:00 (DATETIME)

我将如何使用纯 SQL 迁移它?

4

3 回答 3

2
SELECT CAST(CONCAT(DATE(olddb.table.date),' ',TIME(olddb.table.time*100)) AS DATETIME);
于 2013-11-14T10:37:35.670 回答
0

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)
于 2013-11-14T10:24:10.437 回答
0

试试这个:

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)

这是一个工作示例:

http://www.sqlfiddle.com/#!2/1ff75/1

于 2013-11-14T10:34:39.123 回答