postgreSQL日期记录仅在Rails中保留到某个时间点

时间:2019-05-09 16:19:16

标签: ruby-on-rails database postgresql date

我正在使用Postgres数据库的Rails程序中植入一些简单数据。

当前,它仅将某些日期保留在数据库中。有时,它在我的API中显示为null,这很奇怪。我将发布数据库图片,种子数据以及JSON API。

这是我的桌子:

create_table "pickup_deliveries", force: :cascade do |t|
    t.date "pickup_date"
    t.text "pickup_location"
    t.money "rate", scale: 2
    t.date "delivery_date"
    t.text "delivery_location"
    t.boolean "local"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "loaded_miles", default: 0
    t.integer "deadhead_miles", default: 0
  end

这是我的种子数据:

PickupDelivery.create(:pickup_date => '05-10-2019', :pickup_location => 'Kansas City, MO', :rate => '550.00', :delivery_date => '05-11-2019', :delivery_location => 'Wichita, KS', :local => false, :loaded_miles => '550', :deadhead_miles =>'230');
PickupDelivery.create(:pickup_date => '05-20-2019', :pickup_location => 'Kansas City, MO', :rate => '550.00', :delivery_date => '05-25-2019', :delivery_location => 'Wichita, KS', :local => false, :loaded_miles => '550', :deadhead_miles =>'230');

这是我的JSON API中的持久数据:

[
{
id: 1,
pickup_date: "2019-10-05",
pickup_location: "Kansas City, MO",
rate: "550.0",
delivery_date: "2019-11-05",
delivery_location: "Wichita, KS",
local: false,
created_at: "2019-05-09T16:14:35.312Z",
updated_at: "2019-05-09T16:14:35.312Z",
loaded_miles: 550,
deadhead_miles: 230
},
{
id: 2,
pickup_date: null,
pickup_location: "Kansas City, MO",
rate: "550.0",
delivery_date: null,
delivery_location: "Wichita, KS",
local: false,
created_at: "2019-05-09T16:14:35.319Z",
updated_at: "2019-05-09T16:14:35.319Z",
loaded_miles: 550,
deadhead_miles: 230
}
]

如您所见,日期都是以相同的格式输入的,但只有一个按预期格式显示,而另一个则按null

格式显示。

感谢阅读。

1 个答案:

答案 0 :(得分:1)

原因是您在第二条记录中传递了无效的格式

# Record 1
:delivery_date => '05-11-2019' # dd-mm-yyyy
# to
delivery_date: "2019-11-05"

# Record 2
:delivery_date => '05-25-2019' # dd-mm-yyyy
# Invalud since there is no month 25
so it becomes nil

此日期被解析为dd-mm-yyyy

由于月份,您在第二条记录中传递的日期无效

我建议您以“ dd-mm-yyyy”格式输入日期-“ 20-05-2019”

注意:即使在您的第一个记录中,将日期解析为日期的日期为05,日期为11,月份为年