簡體   English   中英

Rails:如何通過從datetime列中減去列值來查詢行?

[英]Rails: How to query for rows by subtracting column value from datetime column?

在PostgreSQL上運行Rails 4。

我有一列存儲一個日期時間值,另一列存儲一個整數值,該整數值表示以秒為單位的時間跨度。

如何查詢datetime列值減去整數(時間跨度)值比當前時間早的行?

這就是您要問的Rails等效項

Model.where(%q{datetime_col - seconds_col * interval '1 second' < now()})

對於您使用的Modeldatetime_colseconds_col任何值。

datetime 你的意思是我假設的timestamp 我將進一步假設該表(由於缺乏信息):

CREATE TABLE tbl (
   tbl_id  serial PRIMARY KEY
  ,ts      timestamp
  ,seconds integer
  );

datetime列值減去整數(時間跨度)值的時間比當前時間早?

查詢很簡單:

SELECT *
FROM   tbl
WHERE  ts - seconds * interval '1 sec < now();

但是最好將其轉換為可修飾的表達式:

SELECT *
FROM   tbl
WHERE  ts < now() + seconds * interval '1 sec;

now()與標准格式CURRENT_TIMESTAMP (也可以使用now()的Postgres等效。

最近的相關答案:
如何在PostgreSQL中將日期和秒字段轉換為時間戳字段?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM