2017-02-16 189 views
0

我想改變一個選擇語句來說明用戶本地時區,但我無法包圍我的頭。MySQL選擇語句與convert_tz

假設從用戶時區的當天選擇任何記錄,在這種情況下,它被硬編碼爲4小時。

目前我使用...

SELECT * FROM {$this->burnsTable} WHERE DATE(created) = DATE(NOW() - INTERVAL 4 HOUR) 

我想改變這個語句中使用convert_tz,這可能嗎?

回答

1

MySQL不會知道關於用戶時區的任何信息。您需要使用javascript或或可能 PHP,但最好的方法通常是要求用戶選擇一個。那樣的話,你可以store their choice in the database,然後MySQL 可以知道他們的時區。然後你可以使用convert_tz(或者直接填充你給ADDTIME調用的偏移量)。如果你設置了與time zone strings你的數據庫,那麼你可以存儲那些與convert_tz使用它們,或者你仍然可以做這樣的事情

SELECT * FROM {$this->burnsTable} WHERE DATE(CONVERT_TZ(created,'+00:00','+4:00')) = CURDATE(); 

你可以加入到用戶表做使用convert_tz與偏移這可能不是那麼可能是許多查詢,它可能會更好地將時區存儲在您的PHP用戶模型中,然後只傳遞適當的偏移量,而不是每次都查看它。

+0

對不起,我沒有明確這一部分,我***知道他們的時區。它更多地是關於從當前日期選擇關於他們自己的時區的記錄的能力。這看起來像我需要的。 – bc2946088