2012-04-05 328 views
2

我在MS Access程序中鏈接了數十個MySQL表。還有十幾個查詢將這些表格收集起來並以人爲的方式提供數據,尤其是將時間戳轉換爲mm/dd/yyyy格式。將時間戳轉換爲MS Access中的人可讀

我已經測試的時間戳http://www.unixtimestamp.com/index.php),但低於下面的代碼生成日期:2012年4月25日這是不正確應該是4/24/2012

SELECT date_promised, DateAdd('s', 1335312000, #1/1/1970#) AS date_promised2 FROM erp_workorder AS t1 WHERE id_primary = 73135;

這是怎麼回事這裏?

問候, 亞歷

+0

你的日期存儲爲unix時間戳或日期時間嗎? – nnichols 2012-04-05 14:14:51

+0

http://excel.tips.net/T002051_Converting_UNIX_Date_Time_Stamps.html? – Fionnuala 2012-04-05 14:15:40

+1

Unix時間戳以UTC表示。您的代碼是否轉換爲您當地的時區? 1335312000在英國是2012/04/24,但是在美國是2012/04/25。 – 2012-04-05 14:37:53

回答

0

如果date_promised字段是DATETIME類型,你可以使用 -

SELECT date_promised, DATE_FORMAT(date_promised, '%m/%d/%Y') AS date_promised2 
FROM erp_workorder AS t1 
WHERE id_primary = 73135; 

如果date_promised字段包含Unix時間戳,您可以使用 -

SELECT date_promised, DATE_FORMAT(FROM_UNIXTIME(date_promised), '%m/%d/%Y') AS date_promised2 
FROM erp_workorder AS t1 
WHERE id_primary = 73135; 
+0

日期存儲爲unix時間戳,而不是MYSQL DATETIME只是一個普通的簡潔整數,它在PHP中很好地格式化並且類似,但Access由於某種原因想要添加一天:( – 2012-04-05 14:29:36

+0

要澄清.. 。這些表格存儲爲帶有時間戳的MySQL表格...訪問應用程序使用查詢/視圖來將數據轉化爲透視圖 - 缺乏更好的單詞。查詢的SELECT語句必須在Access中完成,而不是MySQL – 2012-04-05 14:30:41

+0

我認爲你可以在MS Access中強制執行非標準查詢。如果沒有,你可以在MySQL中創建一些視圖來產生所需的輸出,然後從Access中查詢視圖。 – nnichols 2012-04-05 14:33:10

1

查詢中的DateAdd()表達式要求將Unix時間戳的日期/時間等效爲UTC時間

? DateAdd("s", 1335312000, #1/1/1970#) 
4/25/2012 

展開格式以明確顯示時間。

? Format(DateAdd("s", 1335312000, #1/1/1970#), "yyyy-mm-dd hh:nn:ss") 
2012-04-25 00:00:00 

當你把你的戳成網頁上的框,然後點擊「轉換」按鈕,它給你這個值:

04/24/12 @ 7:00:00pm EST 

使用前面的格式...

2012-04-24 19:00:00 

因此,現在比較這兩個不同的表示在同一時刻。

2012-04-25 00:00:00 (UTC) 
2012-04-24 19:00:00 (EST) 

如果您想查詢顯示UNIX時間戳有任何時區偏移量,應用轉換,使之如此。