我已经在互联网上搜索了近 6 个小时,以寻找解决我的问题的最快解决方案。
我有一个 SQL Server 数据库,其中某些表的列具有 DATETIME 格式,但这些列中的值采用以下格式:
DD-MM-YYYY HH:MM 例如。 2012年12月18日 00:00
根据我的研究,MySQL 的 DATETIME 值仅接受以下格式:
年-月-日 时:分:秒
现在,我实际上正在尝试在脚本本身而不是数据库中进行转换。
基本上,我在多个表中以 SQL Server 脚本格式保存了超过 250,000 条记录。 除了这部分之外,我已经更改了 MySQL 的所有语法。
如有任何帮助或建议,我们将不胜感激。紧急。
谢谢 这是表格
CREATE TABLE Price(
AirlineCode char(2) NOT NULL
, FlightNumber varchar(6) NOT NULL
, ClassCode char(3) NOT NULL
, TicketCode char(1) NOT NULL
, StartDate DateTime NOT NULL
, EndDate DateTime NOT NULL
, Price decimal NOT NULL
, PriceLeg1 decimal NULL
, PriceLeg2 decimal NULL
, PRIMARY KEY (
AirlineCode,
FlightNumber,
ClassCode,
TicketCode,
StartDate
)
, FOREIGN KEY (AirlineCode) REFERENCES Airlines (AirlineCode)
, FOREIGN KEY (ClassCode) REFERENCES TicketClass (ClassCode)
, FOREIGN KEY (TicketCode) REFERENCES TicketType (TicketCode));
这是一个示例插入:
INSERT INTO Price VALUES ( 'QF', 'QF67', 'ECO', 'E', '18-12-2012 00:00', '04-01-2013 00:00', 3427.82, 1636.14, 2045.20 );
最佳答案
您可以使用MySQL STR_TO_DATE()
函数将日期从已知格式转换为日期时间值。假设您的日期格式为 dd-mm-yyyy hh:mm
(所有数字都用 0 填充,hh:mm 是 24 小时时间),您可以使用:
SELECT STR_TO_DATE('18-12-2012 00:00', '%d-%m-%Y %k:%i')
-- 2012-12-18 00:00:00
您可以在插入查询中使用此函数,如下所示:
INSERT INTO Price VALUES (
'QF',
'QF67',
'ECO',
'E',
STR_TO_DATE('18-12-2012 00:00', '%d-%m-%Y %k:%i'),
STR_TO_DATE('04-01-2013 00:00', '%d-%m-%Y %k:%i'),
3427.82,
1636.14,
2045.20
);
编辑
如果无法编辑插入查询,您可以让 MySQL 完成所有转换。暂时将日期时间列的数据类型更改为 VARCHAR
并导入数据。然后添加一个临时字段,例如StartDate_Temp DATETIME
并运行更新查询:
UPDATE Price SET StartDate_Temp = STR_TO_DATE(StartDate, '%d-%m-%Y %k:%i')
确认数据正常后,删除临时列。
关于mysql - 如何将日期格式从 SQL Server 转换为 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361828/