sql >> データベース >  >> RDS >> Mysql

Mysqlで2月30日を節約(日付フォーマット)

    そのようなDATE「値」をDATEに保存する またはDATETIME 列は、sql_mode ALLOW_INVALID_DATES を使用して可能です。 厳密モードなし:

    したがって、他にチェックがないため、許可された安定した日付の日付をチェックすることは、トリガーを使用して行うことができます。このアプリケーションでは、毎月31日は無効な日付になると思います。

    例:

    CREATE TABLE example (
      contable_date DATE NOT NULL
    ) ENGINE=INNODB;
    
    -- set the sql_mode (here for the session)
    SET @@SESSION.sql_mode = 'ALLOW_INVALID_DATES';
    
    INSERT INTO example (contable_date) VALUES ("2014-02-30");
    
    SELECT 
        DAY(contable_date) as cday,
        MONTH(contable_date) as cmonth,
        TIMESTAMPDIFF(DAY, contable_date, '2014-03-30') as cdiff
    FROM 
        example;
    

    結果:

    cday  cmonth  cdiff
    -------------------
      30       2     28
    

    デモ

    MySQLWorkbenchを使用して取得

    SELECT contable_date FROM example
    

    次の結果:

    contable_date
    -------------
       2014-02-30
    

    しかし、これはsqlfiddle.comでは機能しません。

    ただし、これはお勧めしません。特に、厳密なSQLモードを使用できないためです。日付と時刻の関数への影響も考慮する必要があります。




    1. データの重複排除時に避けるべき5つのよくある間違い

    2. SQLでテーブルを削除する方法

    3. Lightswitchは、MySQLでレコードを追加または変更することを許可しません

    4. 警告:mysql_result()[function.mysql-result]:11行目のprofile.phpのMySQL結果インデックス5の行0にジャンプできません