【问题标题】:How to use BETWEEN date and time mysql if date and time with different field in table如果日期和时间在表中具有不同的字段,如何使用 BETWEEN 日期和时间 mysql
【发布时间】:2017-05-07 17:09:39
【问题描述】:

我有一个表reservasi,其结构数据如下:

  • id_reservasi
  • package_name
  • date_check_in
  • time_check_in
  • price

我想在日期和时间之间选择数据,从以前的数据reservasi 到直到指定的时间。

现在,我使用这个 sql 查询:

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')

但它没有显示任何数据... 如何正确使用BETWEEN

【问题讨论】:

标签: php mysql sql


【解决方案1】:

编辑,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 |

【讨论】:

  • 感谢您的回答...我正在尝试这样的查询...$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 '$tanggal_rekap $jam_rekap' AND now()");结果总行...未过滤
  • @DammahSifLa 看看编辑。你的问题是你如何写你的日期。 MySQL 方式是YYYY-MM-DD HH:MM:SS,所以除此之外的任何东西都应该使用str_to_date() 手动解析。顺便说一句,我没有将 php $var 放在 SQL 中,而是使用 :flag 并在 execute() 中提供 PDO 应该使用的 :flag => $value 数组来保护您的查询
【解决方案2】:

感谢@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()

【讨论】:

猜你喜欢
  • 2018-01-06
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2013-06-16
相关资源
最近更新 更多