2017-03-22 116 views
0

我必須將日期時間與我的MySQL數據庫的當前格式日期時間進行比較,但問題是我不知道如何從我的數據庫獲取該格式。出於某種原因,當我在數據庫中插入日期時間時,會自動將其轉換爲另一種格式,以更改小時和分鐘。例如,如果我想插入'12:05:26',它將更改爲'17:10:3​​0'。我想比較兩種格式來驗證我插入的內容。MySql DataBase的當前日期時間

+0

請不要添加的代碼示例,您的數據庫究竟如何設置(列定義)以及如何你實際上(代碼),努力實現自己的目標潛在的額外信息。 –

回答

0

也許它在插入時混合了時間和日期?可能是由於您的數據庫使用了不同的語言設置,即您插入的格式化日期。嘗試在Insert上使用STR_TO_DATE()函數明確解析日期以避免混亂。

INSERT INTO someTable (someDateTime) VALUES 
(STR_TO_DATE('22/03/2017 9:30:20 AM', '%c/%e/%Y %r')) 
0

我們可以使用DATE_FORMAT功能到MySQL DATEDATETIME值格式化爲指定格式的字符串。例如:

SELECT DATE_FORMAT(NOW(),'%a, %M %e, %Y') 

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format


到底什麼是 「它」 那是做格式轉換?觀察到的行爲可能是可以解釋的,但是沒有看到產生這種行爲的代碼或語句,我們只是在猜測。

它是如何確定MySQL正在改變您提供的值?


MySQL有一個日期時間字符串的標準格式:%Y-%m-%d %T

MySQL確實允許它接受的格式有一定的寬容度。參考手冊指出

的MySQL允許「寬鬆」的格式...

,並給出了冒號不一定保留時間的警告,這些可以用來並將其解釋爲分隔符的日期值。這並不是說我們會永遠真的想這樣做:

SELECT '2017:3:21-16_35_11' + INTERVAL 0 DAY 

https://dev.mysql.com/doc/refman/5.7/en/datetime.html

MySQL也將認識到的數值(以兩位數月,日,小時,分鐘,秒)。 yyyymmddhhmmss,例如

SELECT 20170321163511 + INTERVAL 0 DAY 

支持各種格式的字符串,MySQL提供了方便DATE_FORMATSTR_TO_DATE功能。

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date


CREATE TABLE foo (dt DATETIME PRIMARY KEY) ENGINE=INNODB; 
INSERT INTO foo (dt) VALUES ('2017-03-21 12:05:26'); 
SELECT dt FROM foo; 
SELECT DATE_FORMAT(dt,'%T') FROM foo; 
DROP TABLE foo;