gpt4 book ai didi

ruby-on-rails - Rails/POSTGRES ISDATE 函数

转载 作者:行者123 更新时间:2023-11-29 13:57:44 25 4
gpt4 key购买 nike

我想将所有非日期格式的字符串更改为日期 nil,然后更改列类型。我曾计划使用以下内容:

class SetSubmitDateForAllMyTables < ActiveRecord::Migration
def self.up
MyTable.connection.execute("UPDATE my_table SET submit_date = NULL WHERE NOT ISDATE(submit_date)")
MyTable.connection.execute("UPDATE my_table SET submit_date=created_at WHERE submit_date IS NULL")
change_column :my_table, :submit_date, :date
end

def self.down

end
end

但是,ISDATE 函数似乎在 POSTGRES 中无效。我怎样才能做到这一点?

我愿意使用:

MyTable.all.each do |list|

最佳答案

Postgresql 可以将字符串强制转换为日期,但它会在无效字符串上出错:

dev_db=> select '1/2/2015'::date;
date
------------
2015-01-02

dev_db=> select 'asdf'::date;
ERROR: invalid input syntax for type date: "asdf"
LINE 1: select 'asdf'::date;
^

为了解决这个问题,您可以创建一个 Postgresql 函数来检查字符串是否为有效日期,但实际上,只处理迁移中每条记录的转换会容易得多。

关于ruby-on-rails - Rails/POSTGRES ISDATE 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159290/

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