mysql - 如何将日期格式从 SQL Server 转换为 MySQL

标签 mysql sql-server string datetime database-migration

我已经在互联网上搜索了近 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/

相关文章:

php - 与 mysql 数据库中的表进行比较

sql-server - 如何找到 MS SQL Server 2008 的端口?

java - 使用 MS SQL Server 的 DriverManager 上的 ExceptionInInitializerError

python - 如何在 Python 中仅将字符串的特定部分转换为大写?

string - 在 Bash 中访问字符串的最后 x 个字符

MySql分页结果,具体结果找 "page"

mysql - 在mysql中存储整数数组

sql-server - 查看加入存储过程结果

java - 如何检查子字符串是否位于字符串末尾

java - Sonar-runner执行失败导致cast异常