Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails-将csv导入rails时更改日期格式_Ruby On Rails_Sqlite - Fatal编程技术网

Ruby on rails RubyonRails-将csv导入rails时更改日期格式

Ruby on rails RubyonRails-将csv导入rails时更改日期格式,ruby-on-rails,sqlite,Ruby On Rails,Sqlite,我有一个csv文件要导入RubyonRails中的sqlite3。csv文件有一个日期列,格式为MM/DD/YYYY。sqlite3中的日期格式为DD/MM/YYYY。如何在不更改csv文件的情况下转换为相同的格式?首先,您在SQLite中以错误的格式存储日期。从罚款中: 2.2。日期和时间数据类型 SQLite没有为存储日期和/或时间而预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT、REAL或INTEGER值: TEXT作为ISO8601字符串(“YYYY

我有一个csv文件要导入RubyonRails中的sqlite3。csv文件有一个日期列,格式为MM/DD/YYYY。sqlite3中的日期格式为DD/MM/YYYY。如何在不更改csv文件的情况下转换为相同的格式?

首先,您在SQLite中以错误的格式存储日期。从罚款中:

2.2。日期和时间数据类型

SQLite没有为存储日期和/或时间而预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为
TEXT
REAL
INTEGER
值:

  • TEXT
    作为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)
  • [……]
在SQLite中存储日期的推荐方法是使用ISO-8601格式(
YYYY-MM-DD
)在
text
列中,这样您就可以使用SQLite的函数来处理它们,并且它们可以正确地进行比较/排序

明智的做法是解析Ruby标准库中使用的传入日期:

date = Date.strptime(date_string_from_csv, '%m/%d/%Y')
然后使用以下方法将其转换为ISO-8601日期字符串:

然后将sqlite的日期发送到数据库中。作为奖励,任何sane数据库都可以清楚地理解ISO-8601格式的日期,所以如果您切换数据库,就不必担心这个问题

如果必须使用非标准的
DD/MM/YYYY
格式,请使用:


首先,您将日期以错误的格式存储在SQLite中。从罚款中:

2.2。日期和时间数据类型

SQLite没有为存储日期和/或时间而预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为
TEXT
REAL
INTEGER
值:

  • TEXT
    作为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)
  • [……]
在SQLite中存储日期的推荐方法是使用ISO-8601格式(
YYYY-MM-DD
)在
text
列中,这样您就可以使用SQLite的函数来处理它们,并且它们可以正确地进行比较/排序

明智的做法是解析Ruby标准库中使用的传入日期:

date = Date.strptime(date_string_from_csv, '%m/%d/%Y')
然后使用以下方法将其转换为ISO-8601日期字符串:

然后将sqlite的日期发送到数据库中。作为奖励,任何sane数据库都可以清楚地理解ISO-8601格式的日期,所以如果您切换数据库,就不必担心这个问题

如果必须使用非标准的
DD/MM/YYYY
格式,请使用:


在您的sqlite数据库中,日期存储在一个实际的日期列中,我希望?是的,它存储在一个列中显然,它是一个列,但该列的类型是什么?@SergioTulentsev sqlite实际上不支持
日期
列类型,您应该使用
文本
并将日期存储为ISO-8601字符串。@muistooshort:疯狂!在您的sqlite数据库中,日期存储在一个实际的日期列中,我希望?是的,它存储在一个列中显然,它是一个列,但该列的类型是什么?@SergioTulentsev sqlite实际上不支持
日期
列类型,您应该使用
文本
并将日期存储为ISO-8601字符串。@muistooshort:疯狂!非常感谢。我的csv文件有多行,我使用
名称空间:db do task:import\u csv=>:environment do csv.foreach(“sample\u sladems.csv”,:headers=>true)do | row | slademp.create!(row.to_hash)
将整个文件保存到rails。我想删除当前的日期列,并将转换后的日期列导入其中。我该怎么做?你为什么不放下表格,然后用正确的日期格式重新导入?是否有需要保存的新数据?谢谢。我的csv文件有多行,我使用
名称空间:db do task:import\u csv=>:environment do csv.foreach(“sample\u sladems.csv”,:headers=>true)do | row | slademp.create!(row.to_hash)
将整个文件保存到rails。我想删除当前的日期列,并将转换后的日期列导入其中。我该怎么做?你为什么不放下表格,然后用正确的日期格式重新导入?是否有需要保留的新数据?
date_for_sqlite = date.strftime('%d/%m/%Y')