0

私は、時刻が重要なカレンダー アプリケーションに取り組んでいますが、日付と年は重要ではありません。従業員は利用可能な時間 (たとえば、午前 8 時から午前 9 時 30 分) を入力することができ、私はそれを他の値と照合します。

strtotime() を使用して時間をデータベースに入れていましたが、何も指定されていない場合、関数が日付と年を挿入することに気づきませんでした。従業員の空き時間を特定のタイムスロットと比較し始めたとき、すべての従業員のタイムスタンプが昨日忙しいと言っていたため、一致するものはありませんでした。:P

SQL と PHP の両方でそれらを簡単に比較できるデータベースにちょうど時間を保存する良い方法はありますか? ありがとう。

4

2 に答える 2

1

mySQL timeデータ型を探しています。http://dev.mysql.com/doc/refman/5.6/en/time.html

Microsoft SQL Server(2008/2012) も時間データ型を提供します。http://msdn.microsoft.com/en-us/library/bb677243.aspx

どちらも、時間を「HH:MM:SS」形式で保存できます。それらは比較可能です。(MS SQL の場合、範囲は 00:00:00.0000000 から 23:59:59.9999999 です)

組み込みのデータ型を使用できない場合は、いくつかの関数を記述して、hh:mm から int に変換し、再び元に戻すことができます。

function HourMinuteSecToDecimal($hour_minute_sec) {
        $t = explode(':', $hour_minute_sec);
        return $t[0] * 60 + $t[1] * 60 + $t[2];
}

echo HourMinuteSecToDecimal("23:30:25");
return 3205

function DecimaltoHourMinuteSec($sec, $padHours = false) {
    $hms = "";
    $hours = intval(intval($sec) / 3600);
    $hms .= ($padHours) ? str_pad($hours, 2, "0", STR_PAD_LEFT) . ':' : $hours . ':';
    $minutes = intval(($sec / 60) % 60);
    $hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT) . ':';
    $seconds = intval($sec % 60);
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
    echo $hms;
}

echo DecimaltoHourMinuteSec(3205);
return 23:30:25
于 2013-04-02T21:38:25.943 に答える
0

ここには 2 つの方法があります。

1: タイムスタンプをタイムスタンプとして保存し、クエリを変更して、タイムスタンプから時刻だけを選択するようにします。

2: 文字列フィールドを使用し、時間を hhmm の形式で保存します (例: 0112 は午前 1 時 12 分、1547 は午後 3 時 47 分)。あまりいいとは思えませんが、繰り返しになりますが、mysqlデータベースを使用し、時間をデータ型として使用している場合、それもフォーマットされた文字列になります。

于 2013-04-02T21:44:01.583 に答える