1

ユーザー管理、データを入力するためのフロントエンド コンソール、およびフロントエンドの一部を制御するためのバックエンド コンソールを備えた小さなアプリケーションを構築しました。フロントエンドは、タイムスタンプ付きの MySQL データベースに行を追加します。バックエンドは、X と Y の日付の間でデータベースから行を選択できる必要があります。

私が本当に苦労している日付部分を除いて、これまでのところすべてが機能しています。

フロントエンドの SQL 入力は次のようになります (偽のコードを削除して簡略化しています)。

$date = time();
$top_level_category = $_POST['top_level_category'];
$sub_level_category = $_POST['sub_level_category'];
$company = $_POST['company'];
$agent_name = $_POST['agent_name'];
$ticket_id = $_POST['ticket_id'];

$sql = "INSERT INTO dacc_data ("
     .     "id, top_level_category, sub_level_category, "
     .     "agent_name, date, ticket_id, company"
     . ") VALUES ("
     .     "NULL, '$top_level_category', '$sub_level_category', "
     .     "'$agent_name', FROM_UNIXTIME('$date'), '$ticket_id', '$company'"
     . ")"
;

$result = mysql_query($sql) or die (mysql_error());  

タイムスタンプが取得され、テーブルの DATETIME 列に追加されています。データベース内では dd/mm/yyyy hh:mm:ss として表示されます。

それで...私の最初の質問は-これは正しい方法ですか?

2 番目の質問は、X と Y の日付の間の行の配列を取り出すには、どのような SQL ステートメントが必要かということです。

これが少しとりとめのない場合は申し訳ありませんが、明確であることを願っていますが、さらに情報が必要な場合はお知らせください.

4

3 に答える 3

6

MySQL の日時はダッシュでフォーマットする必要があります。

YYYY-MM-DD HH:MM:SS

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

次に、いくつかの方法で日付範囲を照会できます。

select *
from table
where date >= '[start date]' and date <= '[end date]';

また

select * 
from table 
where date between '[start date]' and '[end date]';

ここで、「table」はデータベース テーブルの名前で、「date」は日時フィールドの名前です。

于 2008-12-02T12:51:41.493 に答える
0

あなたは正しいです。データベースに「YYYY-MM-DD HH:MM:SS」があることを確認できます。DB をすばやく参照するために SQLWave エディターを使用しています。DATETIME 列が自動フォーマットされます。

// Initial questions still stand :)

そうでなくても、答えを更新したことに気づきました - どうもありがとうございました! 主にWHEREが日付形式を正しく指定していなかったため、実際に同じクエリを何度か試しましたが、役に立ちませんでした。SQLWave に惑わされた :(

これからはコマンドラインの使用に戻ります!!!

于 2008-12-02T13:04:45.867 に答える
0

「X と Y の日付の間の行の配列を取り出すには、どのような SQL ステートメントが必要ですか?」

SELECT * FROM `dacc_data` where `date` between "2008-11-01" and "2008-12-01"
于 2008-12-02T13:07:26.047 に答える