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

| 我终于弄清楚了如何通过JDBC和Sequel将我的Sinatra应用程序连接到现有的Oracle数据库。 现在我的问题是我想将Oracle DB中的Date字段显示为带有时间的Date。 Oracle的快速日期定义:   有效日期范围为4712年1月1日   公元前至公元9999年12月31日。的   确定默认格式   由NLS_DATE_FORMAT明确   参数或由   NLS_TERRITORY参数。大小是   固定为7个字节。该数据类型   包含日期时间字段YEAR,   MONTH,DAY,HOUR,MINUTE和SECOND。   它没有小数秒或   时区。 在Ruby中,我想这样做:
row_added.strftime(\'%d.%B %Y %H:%M:%S\') => 09.May 2011 00:00:00
但是Ruby Date没有小时或分钟。 相反,我必须在SQL级别上执行此操作才能看到时间:
to_char(row_added, \'DD.MM.YY HH24:MI:ss\') => 09.05.11 08:33:31
它正在按预期方式工作,但不应该是最佳解决方案。 谁能告诉我如何让Ruby Sequel将其转换为Time或DateTime值而不是Date?     
已邀请:
Sequel将
Java::JavaSQL::Timestamp
Java::JavaSQL::Time
类转换为ruby
Time/DateTim
,并将
Java::JavaSQL::Date
类转换为ruby
Date
(https://github.com/jeremyevans/sequel/blob/master/lib/sequel/adapters/jdbc.rb#L579)。如果Oracle使用“ 5”子类但包含时间信息,则说明这样做有误,因此应该将其“ 2”子类化。 无论如何,要解决此问题,您需要在
jdbc/oracle subadapter
中添加
Dataset#convert_type
方法(https://github.com/jeremyevans/sequel/blob/master/lib/sequel/adapters/jdbc/oracle.rb)无论Oracle特定的日期类型是什么。如果您可以正常运行,请提交补丁。     
试试这个方法:strptime     

要回复问题请先登录注册