我有一個包含不同類型數據的表。其中的一個是生日日期:MySql中的時間戳和夏令時[dst]
ID | meta_key | meta_value
==========================
1 | birthday | 2011-30-01
2 | birthday | 2011-30-07
3 | other | not_related
利用已知的時間戳我想獲得的所有生日像
SELECT *
FROM table
WHERE meta_value = 'birthday'
AND UNIX_TIMESTAMP(STR_TO_DATE(meta_value,'%Y-%m-%d')) = 1296342000
應返回的第一行(#1
),但沒有。原因是時間戳必須是1296345600
我做了一個sqlfiddle來仔細檢查。
看起來DST是造成這個問題,但爲什麼?這些基於UNIX時間戳的時間戳不是全部UTC嗎?我會得到我的PHP的strtotime()
時間戳像
strtotime('2011-30-01')
編輯:
我不能比較字符串直接,因爲我也喜歡得到一定的「範圍」的結果,如「八月至所有生日十月」
爲什麼你首先使用unix時間戳?爲什麼不直接比較字符串日期? – 2014-09-01 16:10:48
不可能的原因我喜歡使用> =,>,<,<=以及 – Xaver 2014-09-01 16:12:59
'我無法直接比較字符串,因爲我也喜歡從「從8月到10月的所有生日」這樣的某個「範圍」 '你可以做到這一點比較日期...而不是unix timestamp – 2014-09-01 16:13:28