2017-03-22 5 views
0

MySQLデータベースの現在の書式の日付時刻と日付時刻を比較する必要がありますが、データベースからその形式を取得する方法がわかりません。何らかの理由で、データベースに日付時刻を挿入すると、時刻と分を変更する別の形式に自動的に変換されます。たとえば、'12:05:26 'を挿入したい場合、' 17:10:3​​0 'に変更します。私は2つのフォーマットを比較して、私が挿入しているものを検証したいと思います。MySql DataBaseの現在の日時

+0

データベースが設定されている方法を正確に、コードのサンプルを追加します(列定義)を行うと、あなたが実際に(コードで)あなたの目標を達成しようとする方法についての潜在的な追加情報ください。 –

答えて

0

インサートに時間と日付が混ざっているのでしょうか?あなたのデータベースは、あなたが挿入している書式設定された日付とは異なる言語設定を使用しているからです。挿入時にSTR_TO_DATE()関数を使って明示的に日付を解析して、うんざりしないようにしてください。

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

私たちは、指定された形式の文字列にMySQLのDATEまたはDATETIME値をフォーマットするDATE_FORMAT機能を使用することができます。たとえば、次のように

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には、datetime文字列の標準フォーマット、%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はまた、(第2分、時間、日、2桁の月に)数値を認識します。例えば、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; 
関連する問題