我需要選擇ISO 8601日期。MySQL ISO 8601帶時區偏移量而不是Z值的日期
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
這將產生類似
2013-11-13T15:47:530Z
但我需要它的偏移,而不是Z值:
2013-11-13T15:47:53+02:00
我怎樣才能做到這一點與普通的MySQL?
我需要選擇ISO 8601日期。MySQL ISO 8601帶時區偏移量而不是Z值的日期
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
這將產生類似
2013-11-13T15:47:530Z
但我需要它的偏移,而不是Z值:
2013-11-13T15:47:53+02:00
我怎樣才能做到這一點與普通的MySQL?
您需要將時區作爲額外的列存儲在數據庫中。我不知道任何存儲datetime 與時區/偏移量的數據庫。
或日期存儲爲字符串中的ISO 8601格式偏移..
編輯:我站在有點糾正,一些較新的數據庫它是可能的!
似乎實際上有點標準SQL99。
不適用於Mysql。版本5.6。
我確實覺得是,校正從我來到這個事實安慰;-)
他的段應爲ISO 8601的工作沒有milis,也不支持祖魯時間:
select IF(
LENGTH(value) < 23,
STR_TO_DATE(value,'%Y-%m-%dT%TZ'),
CASE SUBSTRING(value from 20 for 1)
WHEN '+' THEN
DATE_ADD(
STR_TO_DATE(SUBSTRING(value from 1 for 19),'%Y-%m-%dT%TZ'),
INTERVAL SUBSTRING(value from 21 for 2) HOUR)
WHEN '-' THEN
DATE_SUB(
STR_TO_DATE(SUBSTRING(value from 1 for 19),'%Y-%m-%dT%TZ'),
INTERVAL SUBSTRING(value from 21 for 2) HOUR
)
END
)
from THE_NAMESPACE.THE_TABLE.THE_COLUMN as value;
你怎麼知道你想指定哪個偏移量? –
你的意思是時區不會保存在mysql datetime對象中? 我想要的日期時間的偏移量.. – DanFromGermany
不我所知...(注意,一個偏移量是不是真的與時區相同) –