php - 如果表中的日期和时间具有不同的字段,如何使用 BETWEEN 日期和时间 mysql

标签 php mysql sql

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

  • id_reservasi
  • package_name <- varchar
  • date_check_in <- varchar 格式 (d-m-Y)
  • time_check_in <- varchar 格式 (h:i:s)
  • 价格 <- varchar

我想从以前的数据 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

最佳答案

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

关于php - 如果表中的日期和时间具有不同的字段,如何使用 BETWEEN 日期和时间 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834332/

相关文章:

php - 可变变量 : when useful?

php - 简单的 SQL UPDATE 查询使连接速度减慢 5-10 秒

mysql - 带有内连接的 SQL 更新查询 : change to improve execution time

mysql - 如何获取mysql中相同值的计数

SQL Server POWER 函数

PHP:如何在一天中的特定时间运行循环?

php - 警告 : mkdir(): File exists

php - 如何使用 PHP mysql 将 googleaddese 插入 MySQL 数据库

mysql - 检查 NULL 或空变量(MySQL 存储过程)

mysql - 表达式引擎 SQL AND OR 查询?