2015-08-16 94 views
2

我不明白什麼格式使用ArangoDB日期存儲。 嘗試在這樣的格式插入日期: {"name": "vasia", "date": date("2013-01-15")}如何將日期插入到ArangoDB?

[email protected]:\vibe-d-0.7.24\source\vibe\data\json.d(1116): (1): Error: Expected valid JSON token, got 'date("2013-0'.

它看起來像vibed JSON模塊無法在這個字符串,但是什麼格式使用阿朗戈?

字符串格式{"name":"vasia","date":"2013-01-15"}成功插入數據庫,但我不明白是插入爲文本還是作爲日期對象?

回答

4

是插入爲文本還是作爲 日期對象?

作爲文本,因爲ArangoDB only supports JSON data types。 JSON沒有日期類型,所以日期通常被編碼爲字符串。你是如何做到這一點取決於你的,但是由於你使用D,我建議你使用Date.toISOExtString。有關其他一些選項,請參閱this question

0

我還沒有使用過ArangoDB,但ArangoDB date documentation建議您使用類似DATE_TIMESTAMP("2013-01-15T14:19:09.522")和/或DATE_ISO8601("2013-01-15T14:19:09.522Z")的東西。希望這可以幫助。

+0

這兩個函數都是AQL函數,並非真的需要插入日期。他們可以在Zulu時間將ISO日期字符串或數字解析爲ISO日期字符串,或解析自1970年1月1日(整數)以來經過的毫秒數。他們還有一個二級簽名來創建如下所示的日期:'DATE_ISO8601(2015,08,16,22,16,35,234)',請參見[AQL日期函數](https://docs.arangodb.com/Aql /DateFunctions.html)。要存儲日期,您可以使用AQL,'db.collection.save({date:「2015-08-16T20-16」INSERT {date:「2015-08-16T20-16-35Z」} INTO collection' -35Z「});'使用* arangosh *等 – CoDEmanX

+0

任何ISO 8601字符串都可以,例如在JavaScript中使用'Date()。toISOString()'或'Date.now()'。 ArangoDB實際上不會拒絕無效的日期,因爲它只是一個字符串,並沒有從DB端強制執行格式。但是,您應該插入一致的日期,否則稍後處理時會遇到麻煩。您可能想要在祖魯語時間存儲所有日期以保持一致性和排序性(​​請記住,它只是一個正在排序的字符串)。如果客戶提供'2015-08-16T22:20:00 + 02:00'(GMT + 2時區),只需通過'DATE_ISO8601(...)'轉換爲UTC + 0(它也會驗證它)。 – CoDEmanX

+0

@CoDEmanX你的意思是這樣的: '''Json str = parseJsonString('{「name」:「vasia」,「date」:「DATE_TIMESTAMP(」2013-01-15T14:19:09.522「)」} ')'''?然後通過HTTP API傳遞這個JSON對象(我使用它) – Suliman