簡體   English   中英

Perl DBIx::Class 能否覆蓋從數據庫中檢索列的方式?

[英]Can Perl DBIx::Class override the way a column is retrieved from the database?

我直到今天才使用過 DBIx::Class,所以我對它完全陌生。

我不確定這是否可行,但基本上我的 SQLite 數據庫中有一個表,其中有一個時間戳列。 時間戳列的默認值為“CURRENT_TIMESTAMP”。 SQLite 將此存儲在 GMT 時區,但我的服務器位於 CDT 時區。

我在正確時區獲取時間戳的 SQLite 查詢是這樣的:

select datetime(timestamp, 'localtime') from mytable where id=1;

我想知道是否可以在我的 DBIx 模式中為“MyTable”強制它每次從數據庫檢索“時間戳”字段時應用日期時間函數?

食譜中,似乎可以在使用 ->search() 函數時執行此操作,但我想知道是否可以這樣做,如果我使用的是 search()、find()、all(), find_or_new() 或任何將從數據庫中提取此列的函數,它會將 datetime() SQLite 函數應用於它嗎?

DBIx::Class 似乎有很好的文檔 - 我想我對它太陌生了,我沒有找到合適的地方/東西來搜索。

提前致謝!

我已經以這種方式使用了 InflateColumn::DateTime 並帶有時間戳,我可以確認它有效,但我想知道你是否有這個倒退。

如果您的列是 UTC,則將該列標記為 UTC,然后加載它時應該是 UTC 時間。 然后,當您在 DateTime 上 set_timezone 時(大概這將是一個輸出問題 - 在輸出時您關心它是本地分區的)您可以將其設置為本地時間,它將進行必要的調整。

暫無
暫無

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

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