2017-09-04 13 views
-1

私はMySQLとphpMyAdminで作業しています。私は私のデータベースに '日付'フィールドを持っていると私は計算し、各レコード/行の '日付'フィールドの日付以降の過去の日数を表示するMySQL_dbのフィールドを作成する必要があります。保存された日付フィールドを使用して、渡された現在の日数を計算するフィールドを計算しました

PHPでコードを生成する機能はありません。

この計算をMySQL_dbに表示するためのフィールドをMySQLに作成する方法はありますか?

+0

これは、計算フィールドを追加する単なるALTER TABLEではありませんか? –

+0

おそらく私は明確にすべきです。私は何を求めているのですか?同じテーブルレコード/行の既存のDATEフィールドからの日数を数える、MySQL TABLEのフィールドを作成する方法はありますか? –

+0

なぜPHPタグですか? – Strawberry

答えて

0

あなたがここに(将来的にあなたのために有用である可能性がMySQLで、その他の機能)CURDATE()DATEDIFF()機能について読むのが好きかもしれません:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since 
FROM MyTable; 

あなたがこのテーブルに組み込まれたい場合は非決定論を使用しているので、あなたが式に基づいて仮想列を追加することができますが、これはこのケースでは動作しません

CREATE VIEW MyView AS 
    SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since 
    FROM MyTable; 

のMySQL 5.7をサポートgenerated columns:、あなたはVIEWを使用することができますそのような式ではCURDATE()のような関数は使用できません。

ALTER TABLE MyTable ADD COLUMN days_since INT AS (DATEDIFF(CURDATE(), mydatefield)); 
ERROR 3102 (HY000): Expression of generated column 'days_since' contains a disallowed function. 
+0

私はアプリケーション(PhP)コードを変更できる場合、私はこの関数を作成するためにDATEDIFF()を使用できることを知っています。私はできない。私の唯一の手段は、問題の「日付」からの「日数」をMySQLテーブルの外に出すことです。それが不可能な場合は私には他に選択肢がありません。 –

+0

私はあなたのニーズを満たしていない理由を理解していないと思います。 –

関連する問題