【问题标题】:how to use not between clause in codeigniter如何在codeigniter中使用not between子句
【发布时间】:2019-05-29 11:45:23
【问题描述】:

我不知道这个查询有什么问题。我收到错误。可以请任何人告诉我这件事。

$this->db->where("ac.booking_date", $booking_date); 
$this->db->where(''.$booking_date .' NOT BETWEEN ac.booking_date AND ac.end_date', null, false); 

发生数据库错误

错误号:1064

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 7 行的“10:00 NOT BETWEEN ac.booking_date AND ac.end_date ORDER BY ac.id DESC”附近使用正确的语法

选择ac.*, p.first_name, p.last_name FROM anb_crm_bookings ac LEFT JOIN anb_crm_users_personal_info pppp@9876543333 987654335@.created_by 其中ac.email = 'devid00@Gmail.com' AND ac.record_id = '36841' AND ac.@9876543529@ = '2019- :00' AND 2019-05-29 10:00 NOT BETWEEN ac.booking_date AND ac.end_date ORDER BY ac.id DESC

文件名:models/BookingModel.php

行号:245

【问题讨论】:

  • 逻辑上,如果您将booking_date 与您输入的日期进行比较,那么第二个 where 语句有什么用?
  • $this->db->where(" "'.$booking_date .'" NOT BETWEEN ac.booking_date AND ac.end_date", null, false); 更正此
  • 我需要检查以前的预订,例如 10:00 到 12:00 之前的预订,所以下次不能在 11:00 到 1:00 之间。
  • 请用您想要的更好的说明或逻辑更新您的问题,因为从我们看到的情况来看,您没有写任何东西
  • 先格式化你的日期。

标签: php mysql codeigniter


【解决方案1】:

您忘记了第二个 WHERE 中的引号。 用下面的代码替换它

 $this->db->where("ac.booking_date", $booking_date); 
 $this->db->where('"'.$booking_date .'" NOT BETWEEN ac.booking_date AND ac.end_date', null, false);

【讨论】:

  • 或简称:$this->db->where("$booking_date NOT BETWEEN ac.booking_date AND ac.end_date", null, false);
  • 为什么需要介于两者之间?只需使用 '>
  • @Vickel 我可以将日期函数与 ac.booking 或 ac.end_date 一起使用来仅提取时间吗?
  • 是的,在选择写入DATE_FORMAT(ac.booking,'%H:%i:%s')
  • @Akshay 你应该就这个问题提出一个新问题,无论如何这里有一些信息:mariadb.com/kb/en/library/between-and
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多