4

MySqlに日付型の列があります。デフォルトの MySql 日付形式は YYYY/MM/DD です。しかし、実際には DD/MM/YYYY 形式を使用することを好みます。

列の日付形式を変更できますか?

4

5 に答える 5

3

いいえ、DATE、DATETIME、または TIMESTAMP 列のデフォルトの MySQL 形式を変更することはできません。

ただし、SQL ステートメントで MySQL 関数を使用して、DATE 式を別の形式の文字列として出力できます。

DATE_FORMAT( datecol , '%m/%d/%Y')  AS datecol

(これは SELECT リストでは問題なく機能しますが、これを述語 (つまり WHERE 句) で使用することは避けてください。そこで、裸の列を参照し、好みの形式 'MM/DD/YYYY' の文字列を次のように変換します。 STR_TO_DATE 関数、例えば

datecol >= STR_TO_DATE('07/16/2012','%m/%d/%Y')

そうは言っても、データベースとのやり取りでMySQLのデフォルトのDATE形式を使用し、コードでフォーマットの変更を処理する方が、実際にはより適切に機能すると思います.

于 2012-07-18T15:44:56.267 に答える
2

他の DBMS には、セッション単位でも変更できるデフォルトの形式があります。たとえば、Oracle ではNLS_DATE_FORMATセッション変数を変更するだけで、Oracle は入力と出力の両方にカスタム形式を使用します。MySQL はそうではありません。

この目的に適していると思われるサーバー変数(date_formatおよび)がいくつかあります。datetime_format

mysql> SHOW VARIABLES LIKE 'date%_format';
+-----------------+-------------------+
| Variable_name   | Value             |
+-----------------+-------------------+
| date_format     | %Y-%m-%d          |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+

まず、それらはサーバー側であり、動的ではありません (実行時に設定することはできません)。しかし、もっと悪いのは、それらが実際に使用されたことがないということです。これらの変数は、日付形式にまったく影響を与えませんでした。それらは現在非推奨であり、削除のためにキューに入れられています。

要約すると、いいえ、できません。日付形式は固定です。

于 2014-01-23T17:31:59.503 に答える
0

他の人がそれは不可能だと説明しているように、これは代替ソリューションです。少し調整が必要ですが、日付列のように機能します。

どうすればフォーマットを可能にできるかを考え始めました。私はアイデアを得ました。そのきっかけを作るのはどうですか?つまり、 type の列を追加charし、MySQL トリガーを使用してその列を更新します。そして、それはうまくいきました!トリガーに関連するいくつかの調査を行い、最終的にこれらのクエリを思いつきました。

CREATE TRIGGER timestampper BEFORE INSERT ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y');
CREATE TRIGGER timestampper2 BEFORE UPDATE ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y');

TIMESTAMPまたはを列の型として使用することはできませんDATE。これらには独自の形式があり、自動的に更新されるためです。

だから、ここに代替のタイムスタンプまたは日付の代替があります! これが役に立てば幸いです。少なくとも、これが機能したことをうれしく思います。

于 2014-01-24T17:13:04.410 に答える
0

試すecho date('d/m/Y', strtotime($date));

これにより、既存の日付が取得され、UNIX 時間に変換され、必要な形式の日付に変換されます。

于 2012-07-18T15:08:28.063 に答える