2016-07-22 64 views
0

我正在使用Node.js + Express + MySQL構建Web應用程序。在每個表中都有一個CreatedOn列,它是Datetime。無論何時從Web應用程序創建記錄,在後端我都會創建var createdOn = new Date();填充這個字段。查詢後MySql datetime字段值返回不正確

當用戶打開記​​錄列表頁面時,我想默認顯示當天(今天)創建的記錄。但是,我仍然可以看到昨天創建的記錄(僅在昨天而不是在此之前)。在我的數據庫中,當我通過PhpMyAdmin查看時,日期時間值保存爲2016-07-21 18:01:22。

我的SQL查詢看起來是這樣的:

選擇COL1,COL2 ...從MyTable的科隆其中date(CreatedOn)= DATE(NOW())ORDER BY TIME(CreatedOn)DESC

當我從這個查詢調試行時,它似乎像CreatedOn和NOW()值已更改。

在寫這個問題的時候,它是2016年7月22日,但是DATE(NOW())顯示它2016-07-20T18:30:00.000Z並且它顯示DATE(CreatedOn)爲2016-07- 20T18:30:00.000Z。

我需要在數據庫中進行一些調整嗎?還是我讀這些值錯了? 感謝您的幫助。

+0

你不需要date()函數,因爲現在返回一個日期。 – Jens

+0

js datetime,服務器日期時間,mysql日期時間。他們可能在不同的時區。確保它們是相同的 – SIDU

+0

服務器是我的本地主機,數據庫由GoDaddy託管,它似乎在應用程序中創建時存儲正確的DateTime。但是,當從數據庫中讀取它時,它會將其轉換爲另一個值。 – codeinprogress

回答

0

我得到了一些問題,有時當我拿出記錄給我不同的結果,但是當我使用DATE_FORMAT將固定我的問題

Date_Format(date_field,"%Y-%m-%d"); 

做整個你的日期字段即可。 希望它有幫助..

+0

那麼我是否使用日期格式進行比較? – codeinprogress

+0

是比較它作爲結果.. Date_Format不僅幫助我很多一次。需要考慮的東西,日期必須看起來像這樣的格式「2016-07-22」總是..如果你使用它在條件 –

+0

剛剛嘗試過,沒有工作:(它仍然顯示我昨天創建的記錄 – codeinprogress