如何将JDBC:Oracle日期转换为Ruby的DateTime?

如何将JDBC:Oracle日期转换为Ruby的DateTime?,ruby,oracle,jdbc,sinatra,sequel,Ruby,Oracle,Jdbc,Sinatra,Sequel,我终于想出了如何通过JDBC连接我的Sinatra应用程序,并将其作为现有Oracle数据库的续集 现在我的问题是,我想将Oracle DB中的日期字段显示为带有时间的日期 Oracle中的快速日期定义: 有效日期范围为4712年1月1日 公元前3年至公元9999年12月31日 默认格式已确定 通过NLS_日期_格式显式 参数或由 NLS_区域参数。尺寸是 修正为7字节。此数据类型 包含年份的日期时间字段, 月、日、小时、分钟和秒。 它没有分数秒或秒 时区 在Ruby中,我想这样做: row_a

我终于想出了如何通过JDBC连接我的Sinatra应用程序,并将其作为现有Oracle数据库的续集

现在我的问题是,我想将Oracle DB中的日期字段显示为带有时间的日期

Oracle中的快速日期定义:

有效日期范围为4712年1月1日 公元前3年至公元9999年12月31日 默认格式已确定 通过NLS_日期_格式显式 参数或由 NLS_区域参数。尺寸是 修正为7字节。此数据类型 包含年份的日期时间字段, 月、日、小时、分钟和秒。 它没有分数秒或秒 时区

在Ruby中,我想这样做:

row_added.strftime('%d.%B %Y %H:%M:%S') => 09.May 2011 00:00:00
但是红宝石约会没有小时或分钟

相反,我必须在SQL级别执行此操作以查看时间:

to_char(row_added, 'DD.MM.YY HH24:MI:ss') => 09.05.11 08:33:31
它正在按预期工作,但不应该是解决这一问题的最佳解决方案


有人能告诉我如何让Ruby Sequel将其转换为时间或日期时间值而不是日期吗?

试试这个方法:

Sequel将
Java::JavaSQL::Timestamp
Java::JavaSQL::Time
类转换为Ruby
Time/DateTim
,将
Java::JavaSQL::Date
类转换为Ruby
Date
()。如果Oracle使用了
Java::JavaSQL::Date
的子类,但包含了时间信息,那么他们做得不对,应该是子类化
Java::JavaSQL::Timestamp


无论如何,要解决这个问题,您需要将
数据集#convert_type
方法添加到
jdbc/oracle子适配器
(),并处理oracle特定的日期类型。如果正确运行,请提交修补程序。

sequel返回的对象是日期。日期对象不包含任何小时和分钟。因此,我无法为strtime方法创建字符串。还是我走错了方向?