2015-11-02 46 views
2

我正在尋找將一堆日期/時間輸入到數據庫中。所有這些都是格式如下:將日期輸入到數據庫(phpMyAdmin,SQL)

2015-07-15T05:25:13.292+00:00 

我不知道的日期手段的+00:00方面,並沒有什麼似乎比00:00的任意值。目前,我有以下SQL語句來創建表,儘管我想找出正確的方式來格式化表和日期的SQL語句。

當前創建表:

CREATE TABLE `bookreservation` (`StartTime` varchar(50) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

插入例如:

INSERT INTO `bookreservation` (`StartTime`) VALUES ('2015-07-15T00:00:00.851+00:00'); 

什麼是適當的CREATE TABLE語句來怎麼會是改變我的INSERT INTO語句?

+1

我猜+00:00 UTC偏移。 –

回答

1

看起來像+00:00是時區偏移量。在您的情況下,如果您可以安全地忽略時區偏移量,則可以使用STR_TO_DATE()

STR_TO_DATE('2015-07-15T05:25:13.292+00:00','%Y-%m-%dT%h:%i:%s.%f+00:00') 

您可以解決此到您的INSERT聲明:

INSERT INTO `bookreservation` (StartTime) 
VALUES (STR_TO_DATE('2015-07-15T05:25:13.292+00:00','%Y-%m-%dT%h:%i:%s.%f+00:00')); 

這將允許您使用DATETIME類型列:

CREATE TABLE `bookreservation` (`StartTime` DATETIME DEFAULT NULL) 
+0

使用這種格式,當我用所有的INSERT語句導入.sql文件時,表中的所有內容都顯示爲NULL。 – Shoggoth269

+0

我也簡單地切掉了+00:00,我仍然獲得NULL值。 – Shoggoth269

+0

您是否在插入中包含'STR_TO_DATE()'? – vhu

1

+00:00是時區信息,告訴您給定時間在UTC前後的時間。第一個壞消息是標準的mysql datetime格式不包含時區信息。任何日期時間值的時區由會話的(mysql會話)時區設置決定。

如果時區數據始終爲+00:00,那麼我不會擔心太多 - 除非您的服務器位於不同的時區 - 我會簡單地將時區片斷並將數據存儲在日期時間領域。

如果時區數據可以是不同的(我會endevour,以找出是否也可以不同,請不要將您的通話出場),那麼我會存儲在一個日期時間字段的日期時間,並有一個單獨的領域時區。如果您只想顯示時區信息,時區字段可以是字符類型。如果您想根據時區數據進行計算,那麼我會使用一個小數字段(差異可能不是一整小時)。