ターミナル経由でMySqlを使用しています。以下は、テーブルの作成に使用したコマンドですが、日付をYYYY-MM-DD HH:MM:SSで表示しています(例:2018-05-25 14:12:47)
create table test (foo int, ts timestamp default CURRENT_TIMESTAMP);
しかし、デフォルトでは(YYYY-MM-DD)形式でデータを挿入するたびに昨日の日付が必要です。
コマンドを見つけるのを手伝ってください。
おかげで、 アミット
回答 2 件
MySQLのデフォルト値は定数でなければなりません。関数または式にすることはできません(CURRENT_TIMESTAMPを除く)。
ソース:http://dev.mysql.com/doc/refman/5.6/en/data-type-defaults.html
さらに、要件に合わせてテーブルにトリガーを追加できます
制約なしで単純にテーブルを作成する
create table test (foo int, ts timestamp );
次に、このテーブルにトリガーを追加します
CREATE TRIGGER settime BEFORE INSERT on test FOR EACH ROW BEGIN IF new.`ts ` is null THEN SET new.`ts ` = DATE_ADD(NOW(), INTERVAL -1 DAY); END IF; END;
関連した質問
- 同じテーブル内の2つのクエリからのMySQLOneの結果
- MySQL(Aurora)adddateまたはdate-addまたはdate-subを使用してタイムスタンプを更新すると構文エラーが発生する
- 複数の接続されたテーブルから時間を合計する方法は?
- mysql:複数のフィールド(重複の近く)に一致する1つを除くすべてのレコードを削除済みとしてマークします
- カテゴリに関連するSQLのカウントのパーセンテージを計算します
- Sum出力の順序が間違っています
- MySQLテーブルのさまざまな行の2つの最高値を見つけます
- SQLで前月を取得する方法は?
- mySQLを使用して、現在のデータベーステーブルの情報で別のデータベーステーブルを更新するにはどうすればよいですか?
- 参照と外部キーのmySQLでエラーが発生する
MySQLの公式ドキュメントhttps://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-addによると、次のようにできます。
作成時に「昨日」を保存する場合:
更新ごとに「昨日」を保存する場合:
この回答によると、NOW()-1日からレコードを選択します。
それが役に立てば幸い!