簡體   English   中英

Rails SQL日期時間比較失敗

[英]Rails SQL datetime comparing fails

我正在嘗試對datetime字段進行比較。 使用時區,該值將被視為字符串。

DB:MS SQL

MyTable.find_by_sql("select * from my_table where my_date > '2012-02-15 16:07:32 UTC'")

ActiveRecord::StatementInvalid: TinyTds::Error: Conversion failed when converting date and/or time from character string.

如果我刪除時區,它將返回結果。

MyTable.find_by_sql("select * from my_table where my_date > '2012-02-15 16:07:32'")

如何與'2012-02-15 16:07:32 UTC'進行比較? 我需要使用find_by_sql(從其他數據庫中獲取數據。不能使用rails sql查詢)。 謝謝!

您可以使用以下方法解析日期時間:

a_datetime = DateTime.strptime('2012-02-15 16:07:32 UTC', '%Y-%m-%d %H:%M:%S %Z')

然后使用以下格式格式化日期:

datetime_str = a_datetime.strftime('%Y-%m-%d %H:%M:%S')

並通過以下方式進行查找:

MyTable.find_by_sql("select * from my_table where my_date > '#{datetime_str}'")

我沒有測試過任何一個,但應該可以。

我猜您正在在datetime字段上調用to_s ,從而導致“ 2012-02-15 16:07:32 UTC”?

嘗試調用to_s(:db)以獲得數據庫友好版本。

暫無
暫無

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

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