2011-06-28 54 views
1

まず、データベース内のエントリ:MySQLの時間/日付計算

enter image description here

私は営業日プラス昼食の(時間と分で)、開始日開始時刻と終了時刻の書き込み入力フォームを持っています(例ではdato = date、modetime =開始時間、modeminut =開始分、fyr​​time =終了時間、fyrminut =終了分)で分断します。私はいくつかの計算を行う必要があります:

  • まず、datetimeフィールドmodetidに日付、開始時間、分を計算します。
  • 終了時間と分で同様の計算を行いますが、終了時間が開始時間よりも短い場合は1日前に移動します(fyrtidとします)。
  • 最後に、fyrtidとmodetidの差分を休止する。

データベースに直接自動的に行うことができますか(そうなら、どうしたらよいですか)、それに何かPHPが必要ですか?

私はその巨大な命令を知っていますが、私の知識の低レベルでは意味をなさない日付/時刻の計算に関する多くの情報を見つけることができませんでした。 MySQLまたはPHPの日付/時刻計算に関する包括的なガイドへのリンクも大いに歓迎されます。

+1

あなたのための役に立つことを願って?それは私よりもよかった – dynamic

+1

私はMySQLの日付の代わりにdatetimeを使用することをお勧めします。これにより、PHPとMySQLは完全な日付時刻に対して数多くの計算方法や差分、加算、減算などを行うことができるため、すべてのデータを1つのフィールドに格納して計算を簡単にすることができます。 – Mikecito

+0

@ yes123 haha​​ha。 – dqhendricks

答えて

0

UNIXのタイムスタンプ(UNIX_TIMESTAMP()in Mysql)に基づいてphp function time()で作業することをお勧めします。UNIXの時刻は次のようになります:1307387678 あなたのフォームの開始時刻時間。 (YYYY/MM/DDに設定された日付形式)のコードを次のようにUNIXタイムスタンプに)、その後(のstrtotimeによって、これらのfiledsをひそか日(時間と分)の時間を選択することができるもののクライアント機能を置く:

$startdate = strtotime ("$_POST['calender_start'] $_POST['hour_start']:$_POST['minutes_start']" ); 
$enddate = strtotime ("$_POST['calender_end'] $_POST['hour_end']:$_POST['minutes_end']" ); 

変更あなたのdbテーブルのフィールド:cpr、startDate、endDate、一時停止、basked、.....

とても柔軟です。 あなたは特別なrecordeを取得したいしながら、あなたは、このSQLで行をフェッチできます。

SELECT ...... FROM [TABLE_NAME] WHERE [VALUE] BETWEEN startDate AND endDate 

を私はあなたが使用しているのphpMyAdminのバージョン

+0

正しく理解すれば、行くべき方法のようです。しかし、私が言ったように、私はPHPとMySQLについては何も知らない。私は自動フォームビルダーをRapidweaverにハックしようとしているので、おそらくどこでも文法が間違っています。 – Anders

+0

...間違った場所に物を置く。ここで私のハックです:http://www.konferencer.nu/example.txt – Anders