SQL Server 时间的字段怎么判断?

公司的一个报餐系统,一个用餐信息表。有两个字段用来标识用餐时间,一个开始,一个结束。比如早餐是"07:00" 到"08:30";而它们的格式是HH:mm,即"07:00" 、"08:30"。
我的存储过程是这样写的

      select  
        meal_name
      from 
        base_meal_info_tab
      where 
        @time > meal_start_use_time 
      and @time < meal_end_use_time

什么都查不到,是该怎么查询?求大神指点...

between ... and ... 也试过

阅读 4.6k
2 个回答
你要把前台传的用餐的开始时间、结束时间用between存到一个数组里面并且赋值给这个字段,
譬如说你要查询用户用餐开始时间在某个时间段可以这样子写:

$where['meal_start_use_time'] = ['between',[$this->data['start_time'],$this->data['end_time']]];
select meal_name from base_meal_info_tab where $meal_start_use_time = $where['meal_start_use_time'] ;

同理用户用餐结束时间:
$where['meal_end_use_time'] = ['between',[$this->data['start_time'],$this->data['end_time']]];
select meal_name from base_meal_info_tab where $meal_end_use_time= $where['meal_end_use_time'] ;

其实我感觉用户用餐的结束时间没必要统计,一般开始时间是用户下单时间,结束时间怎么统计啊,
如果不特别关注用户吃饭速度的快慢没必要统计的.
直接留一个开始用餐时间,比如create_time,然后我们查询前台传来的某个时间段得出这些用户

$where['create_time'] = ['between',[$this->data['start_time'],$this->data['end_time']]];
select meal_name from base_meal_info_tab where $create_time = $where['create_time'];
以上仅供参考.

meal_start_use_time ,meal_end_use_time 这两个字段要先转成日期或者时间格式吧?虽然我只用过 oracle

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进