首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在oracle和mysql中使用日期格式

在oracle和mysql中使用日期格式
EN

Stack Overflow用户
提问于 2011-02-11 23:30:33
回答 3查看 4.8K关注 0票数 2

大家好

编写与mysql、oracle和mssql数据库兼容的SQL语句的最佳方法是什么?

例如,当我尝试执行以下命令时:

代码语言:javascript
复制
INSERT INTO "table_name ("date") VALUES (to_date('2011-02-11 16:48:08','yyyy-mm-dd hh24:mi:ss'));

它可以在oracle中运行,但是这个查询会给出错误:当我试图在MYSQL数据库中执行它时,to_date不存在。

但是下面的SQL可以在mysql上运行,而不能在oracle中运行:

代码语言:javascript
复制
INSERT INTO t_sys_log (date) VALUES ('2011-11-11');

所以你能帮我解决mysql和oracle中的日期兼容性问题吗?告诉我有没有办法让标准SQL语句在rracle、mssql和mysql中工作?谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-02-12 04:13:48

尝试使用ANSI标准日期文字

INSERT INSERT INTO t_sys_log ( date )值(日期'2011-12-31');

票数 3
EN

Stack Overflow用户

发布于 2011-02-11 23:38:52

是的,to_date不能同时用于两个数据库,因为它是一个只由Oracle提供的SQL扩展。

你越深入,它就变得越有挑战性。Date和Timestamp不是一回事,所以你会发现自己陷入了一些数据库中需要时间戳,而另一些数据库中需要日期的地方。这是因为在某些数据库中,date只包含日历日期,而不包含任何相关的小时、分钟和秒。

MSSQL日期也受平台时区规则的约束,而其他数据库不以同样的方式保存受时区规则约束的日期。

最后,如果你真的想让它正常工作,你需要编写一个软件层,将日期转换成底层数据库所需的格式,放弃“一条SQL语句做所有日期”。

票数 2
EN

Stack Overflow用户

发布于 2011-02-13 00:27:46

我也遇到了同样的问题。不幸的是,我找不到一个好的方法。相反,我创建了一个随数据库驱动程序一起设置的plugable "helper“类(这是用Java编写的)。它具有创建特定于DBMS的SQL语句部分的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4970853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档