2017-05-07 4 views
3

テーブルに別のフィールドで日付と時刻のmysqlの間で使用するにはどうすればこのような構造のデータをテーブルreservasiを持っている:日時場合

  • id_reservasi
  • package_name < - varchar型
  • date_check_in < - varchar形式(dmY)
  • time_check_in < - varchar形式(h:i:s)
  • price < - varchar型

私はreservasi時間が指定されるまでに、前のデータから日付と時刻の間にフィルタを使用してデータを選択します。今の

、私は、このSQLクエリを使用します。正しくBETWEENを使用する方法 ...

SELECT SUM(price) AS total 
FROM reservasi 
WHERE date(str_to_date(date_check_in,'%d-%m-%Y')) BETWEEN date(str_to_date('$date_check_in_rekap','%d-%m-%Y')) AND date(str_to_date('$date_now','%d-%m-%Y') 
AND STR_TO_DATE(time_check_in, '%H:%i:%s') BETWEEN STR_TO_DATE('$time_check_in_rekap', '%H:%i:%s') AND STR_TO_DATE('$time_now', '%H:%i:%s') 

をしかし、それはどのようなデータが表示されないのですか?

+0

ところで、あなたは** SQLに対して脆弱だ編集した@vkp –

+0

に感謝注射**、あなた自身を安全にする方法を学ぶためにhttp://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-phpを読んでください – Blag

+0

私はpdoをCRUDに使用しています... –

答えて

2

編集、PDOのバージョン:

$cek_pembelian=$this->pdo->prepare(" 
    SELECT 
     SUM(netto_bersih) AS netto_beli, 
     SUM(jumlah_dibayar) AS rupiah_beli 
    FROM p_penerimaan_tbs 
    WHERE str_to_date(CONCAT(tanggal,' ',jam_keluar) ,'%d-%m-%Y %H:%i:%s') 
     BETWEEN str_to_date(:datetime_start ,'%d-%m-%Y %H:%i:%s') AND now() 
     "); 
$cek_pembelian->execute(array(
    ':datetime_start'=>$tanggal_rekap .' '. $jam_rekap 
    )); 

これは、あなたは私が考えて欲しいものですか?

SQL Fiddle

のMySQL 5.6スキーマのセットアップ

クエリ1

SELECT SUM(price) AS total 
FROM t 
WHERE str_to_date(CONCAT(date_check_in,' ',time_check_in) ,'%d-%m-%Y %H:%i:%s') 
BETWEEN '2017-01-24 18:20:33' AND now() 

Results

| total | 
|-------| 
| 300 | 
+0

答えをありがとう...私はこのようなクエリを試しています... '$ cek_pembelian = $ this-> pdo-> prepare(" SELECT SUM(netto_bersih)AS netto_beli、AS(jumlah_dibayar)AS rupiah_beli FROM p_penerimaan_tbs WHERE str_to_date(CONCAT(tanggal、 ''、jam_keluar)、 '%d-%m "%t%$%%i:%s ')$ {$ tanggal_rekap $ jam_rekap} AND; now") "); 結果合計行...フィルタなし –

+0

@DammahSifLaは編集を見ます。あなたの問題はあなたの日付を書いた方法です。 MySQLの方法は 'YYYY-MM-DD HH:MM:SS'です。それ以外のものは' str_to_date() 'で手動で解析する必要があります。ところで、私はSQLの中にPHPの '$ var'を入れないであなたのクエリを保護しましたが、代わりに':flag'を使い、 ':flag => $ value'の配列を' execute() 'に入れてください。 – Blag

+0

ありがとう@Blag ワークパーフェクト...ありがとう:) –

0

@Blag

作業パーフェクト...

編集MySQLのクエリからクエリをありがとう:

SELECT SUM(price) AS total FROM t WHERE str_to_date(CONCAT(date_check_in,' ',time_check_in) ,'%d-%m-%Y %H:%i:%s') BETWEEN str_to_date('$date_check_in_previous $time_check_in_previous') AND now()

関連する問題