gpt4 book ai didi

mysql - Ruby mysql gem - 如何在查询时避免日期时间自动转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:58 24 4
gpt4 key购买 nike

有没有办法将 MySQL 数据库的日期时间列加载到 Mysql gem 的结果中,作为 Ruby 日期时间对象(不是字符串类型对象)可枚举?

例如:

在数据库端,我们有这张表,其中插入了以下内容:

create table ContentDB.test_table
(
id integer primary key auto_increment,
last_update_date datetime,
value varchar(128)
);

insert into ContentDB.test_table(last_update_date, value) values (sysdate(), 'Some test stuff..');
commit;

在 Ruby 端,我们有以下代码(作为名为 test.rb 的文件):

require 'rubygems'
require 'mysql'
require 'date'

begin
con = Mysql.new "localhost", "root", "root", "ContentDB"
rs = con.query "select * from test_table"
rs.each_hash do |row|
l_datetime_field = row['last_update_date'].strftime("%Y%m%d%H%M%S")
end
con.close
end

这会产生以下错误:

test.rb:9:in `block in <main>': undefined method `strftime' for "2017-03-06 22:15:17":String (NoMethodError)

我知道我可以将即将到来的“字符串”值显式转换为日期时间对象。

但我相信,情况不应该如此。我希望我的行是完全相同的行类型(pl/sql 行话),即每个字段都与数据库列类型相对应。也就是说

row['last_update_date']

必须是“日期时间”数据类型。

在不使用 rails 的 ActiveRecord 的情况下,是否有一种在 Ruby 中实现此目的的隐式方法?

最好的问候,

最佳答案

如果您想要比这更多的功能,您需要使用比 super 基本 MySQL 驱动程序更高级别的适配器。这意味着使用 ActiveRecord或者如果你想要更轻的东西,Sequel .

至少不要使用mysql gem,使用mysql2 gem 。

遗留的 mysql 驱动程序并不真正理解 MySQL binary protocol 中的很多类型并且默认情况下似乎将它们转换为字符串。这是该软件包的一个基本限制,在不久的将来不太可能改变。

关于mysql - Ruby mysql gem - 如何在查询时避免日期时间自动转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com