将MySQL日期转换为PostgreSQL日期

叶夫根

已更新(已解决):“ 2000-00-00”不是有效日期。您必须指定月份和日期的值-即“ 2000-01-01”

我是PostgreSQL的新手。我想知道如何将MySQL日期(YYYY-MM-DD)转换为PostgreSQL。我应该在PostgreSQL中使用哪种类型的值来设置日期,例如YYYY-MM-DD?

如果不可能,那么如何在PHP中将YYYY-MM-DD转换为适当的值(PostgreSQL的正确类型/值是什么)?

Tnx很多。

查询示例(在2000-00-00中发布)

INSERT INTO "user" ("user_uni", "user_id", "name", "city", "country", "sex", "birthday", "referal_id", "social_network", "offer_balance", "customer_balance", "registration_time", "last_visit_time", "last_ip", "banned", "fit_actions", "token", "mail", "neverban", "last_api_request", "notify", "vip", "filters_free", "friends", "rate", "discount", "invite_day", "have_invites", "like_public_day", "have_like_public", "last_login", "suspected", "group_counter", "password") VALUES ('1', '19922', 'Иван Иванов', '243', '1', '1', '1988-01-07', '0', '1', '201.770', '500.000', '1352880961', '13533290', '178.150.243.214', '0', '0', '', '', '0', '0', '0', '0', '0', '0', '100.000', '0', '2000-00-00', '0', '2000-00-00', '0', '13533290', '0', '0', '')
克雷格·林格(Craig Ringer)

您的问题不是将MySQL日期格式转换为PostgreSQL日期格式。两者均默认使用ISO日期格式(YYYY-MM-DD)。

问题是,较早的MySQL版本对于认为有效日期的规定不严2月31日?好没问题。第零个月的第零个日期?任何。

较新的版本通过将无效日期静默转换为0000-00-00(这本身就是无效日期,但MySQL接受)来“修复”此问题严格模式下(应始终与MySQL一起使用),它会生成错误。请参阅手册

PostgreSQL强制执行日期有效期,因此不会接受2000-00-00那不是约会,这是胡扯。它还拒绝了0000-00-00这给MySQL用户带来很多问题,因为MySQL将日期0000-00-00用作一种伪空值或NaN,即实际上无效的“有效”日期。

最好的选择是在导入数据之前更正这些日期。如果您要将它们用作未知日期的占位符,请使用NULL(你需要调整依赖于查询<>=,等,因为他们会表现不同)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章