2012-06-28 56 views
0

目前,我的代碼插入到數據庫如下:如何指定「NOW()」是指在MySQL查詢中的24小時時鐘(而不是12小時)?

mysql_query("INSERT INTO lookup_table (
    the_date 
     ) 
VALUES(
     NOW() 
) 
";) 

在一條線,那就是:

mysql_query("INSERT INTO lookup_table (the_date) VALUES(NOW())";) 

的問題是,由於某種原因,NOW(),因爲我有它這裏是將一個12小時的時鐘記錄到數據庫中。 (下午1:03記錄爲01:03:00,而不是13:03:00。)

我可以怎樣指定NOW(),它被格式化爲24小時?

我已閱讀了很多關於格式化的東西。不幸的是,正如過去發生過很多次那樣,有一些小的,幾乎察覺不到的格式問題,可能會使事情變得不正確。

我試圖確保我不會做很長時間的反覆試驗以確保格式正確。

我認爲說「NOW()」的行應該替換爲「DATE_FORMAT(NOW(), %Y-%m-%d %T)」,但是我正在尋找獨立的證實,證明我沒有領導證人,有人說「是的,看起來不錯」。

現在,在數據庫中的條目是這樣的:

2012-06-27 01:03:36 

這將是完美的,如果不是,時間應爲13,而不是01,像這樣:

2012-06-27 13:03:36 

我知道「NOW()」正在工作,它只需要24小時格式,默認情況下它是SUPPOSED。出於某種原因,這並沒有發生,我只想知道用什麼特定的字母數字序列代替「NOW()」以24小時格式記錄。

+1

你的時區是什麼?它可能只是將12小時內的所有內容都插入? (你在早上看到什麼?) –

回答

1

鑑於documentation for NOW(),我懷疑要麼您的系統配置非常奇怪不知何故,或你這是目前12小時的時區是「 out「來自UTC。 (或者你的服務器是,配置爲只是使用UTC,所以它給出了UTC時間,但你期望的是當地時間)。文檔中沒有任何跡象表明NOW()返回的格式受任何文化設置的影響。

我建議一般來說,存儲UTC_TIMESTAMP()的結果無論如何都會是一個更好的方法 - 但是當然你仍然要確保你最終得到一個合理的格式。

那你早上看到的,和你看到同樣的效果,如果你只是用

SELECT NOW(), UTC_TIMESTAMP() 

從交互式查詢窗口?同樣,你有沒有其他服務器可以嘗試相同的查詢?你正在運行哪個版本的MySQL?

+0

我發佈了一個答案,tl; dr版本是「我= derp」。 –

0

裹NOW()在DATE_FORMAT()功能..

+0

你能舉個例子嗎?我很害怕,因爲我認爲默認情況下「NOW()」是24小時,但是我得到的是這樣的東西: 2012-06-27 01:03:36(這是爲在1:00 PM )。 –

+0

我認爲應該用「DATE_FORMAT(NOW(),%Y-%m-%d%T)」代替「NOW()」這一行,但我不確定。這是你的意思嗎? –

0

SOOOO,這裏發生了什麼事:

的客戶喜歡有不良格式的日期和時間爲自己的眼睛。沒關係。

不好的地方是,有人在某個地方像代碼一樣幫助顯示所有對他們錯誤的東西,併成爲它有時被記錄的一部分。區別是「h」與「H」,這就是爲什麼它錯誤地將時間存儲爲12小時而不是24小時。

NOW()絕對是一個24小時記錄,但我工作的意大利麪代碼在某些情況下改變了它,而不是記錄爲12小時。

tl; dr ---哎呀,我沒有注意到「h」應該是某處的「H」,這是一個愚蠢的問題。我想請願我的白癡問題被刪除。

相關問題