そこで、Microsoft SQL Server 11 で実行されているデータベースを取得しました。テーブルにhpfc_prices
は複数のエントリが時系列順に含まれており、大まかに次のようになっています。
|date (varchar(255))|time (varchar(255))|price (decimal(25,10))|
|===================|===================|======================|
|01.01.2016 |00:00 |[some value] |
|01.01.2016 |01:00 |[some value] |
|01.01.2016 |02:00 |[some value] |
|... |... |... |
|01.01.2016 |23:00 |[some value] |
|02.01.2016 |00:00 |[some value] |
|02.01.2016 |01:00 |[some value] |
|... |... |... |
この表は、2016 年 1 月 1 日から 2020 年 12 月 31 日までの範囲で、各エントリは 1 時間を表しています。ここで、テーブルの一部、たとえば 2017 年全体を PHP スクリプトにロードしたいと考えています。そのためには、Medoo をデータベース フレームワークとして使用する必要があり、次のコードを実行しています。
$db = new medoo($database_config);
$hpfcStart = "01.01.2017";
$hpfcEnd = "31.12.2017";
$arr = $db->select("hpfc_prices",["date","time","price"],["AND" => ["date[>=]" => $hpfcStart, "date[<=]" => $hpfcEnd]]);
var_dump($arr);
Medoo クエリは、デバッグによって次の SQL クエリに変換されます。
SELECT "date","time","price" FROM "hpfc_prices" WHERE "date" >= '01.01.2017' AND "date" <= '31.01.2018
ここでの問題は、2017 年のすべてのエントリだけでなく、すべてのテーブルが出力に含まれるようになったことです。Medoo は文字列を varchar と比較するため、日付の比較でクエリが失敗すると思います。私の経験では、これは MySQL で機能しましたが、MSSQL/Medoo についてはよくわかりません。日付を正しく比較する方法を教えてもらえますか?