查询大于时间两小时(例:订单设置两小时后过期

$res = Order::where(['status'=>0,'sid'=>1])->whereRaw("created_at < NOW() - INTERVAL 2 HOUR")->get();

时间字段< NOW() - INTERVAL 2 HOUR

解读:当前时间减去2小时(HOUR)如果还大于下单时间则超过

查询当天、昨天等数据 用于统计

public function senior(Request $request)
{
$Sid = $request->session()->get('SUserId');
if ($request->ajax()){
//查询今天订单数据
$dateD = date('Y-m-d');
//我也看不懂。。。有时间研究
$data = DB::select(
"SELECT IF(count IS NULL, 0, count) as num FROM (SELECT count(*) AS count,DATE_FORMAT(created_at, '%H') AS hour
FROM lkx_orders where date_format(created_at,'%Y-%m-%d') = '$dateD' GROUP BY hour ORDER BY 1) A
RIGHT JOIN (SELECT one.hours + two.hours AS dayHour
FROM (SELECT 0 hours
UNION ALL SELECT 1 hours
UNION ALL SELECT 2 hours
UNION ALL SELECT 3 hours
UNION ALL SELECT 4 hours
UNION ALL SELECT 5 hours
UNION ALL SELECT 6 hours
UNION ALL SELECT 7 hours
UNION ALL SELECT 8 hours
UNION ALL SELECT 9 hours) one
CROSS JOIN (SELECT 0 hours UNION ALL SELECT 10 hours UNION ALL SELECT 20 hours) two
WHERE (one.hours + two.hours) < 24) B ON A.hour = CONVERT(B.dayHour, SIGNED) ORDER BY dayHour"
);
$orderNum = array_column($data,'num'); $data7D = date('Y-m-d',strtotime("-6 day")); $data = DB::select("
SELECT t1.date_str , COALESCE(t2.date_total_countss,0) as date_total_count
FROM(
SELECT @cdate:= date_add(@cdate,interval - 1 day) as date_str
FROM (SELECT @cdate:=date_add(CURDATE(),interval + 1 day) from lkx_orders) tmp1
WHERE date_format(@cdate,'%Y-%m-%d') >'$data7D'
) t1
LEFT JOIN(
SELECT date_format(m.created_at, '%Y-%m-%d') as date_str , sum(price) as date_total_countss
FROM lkx_orders as m
WHERE date_format(m.created_at,'%Y-%m-%d') >'$data7D' and m.status=1 and sid=$Sid
GROUP BY date_str
) t2
on t1.date_str = t2.date_str
order by t1.date_str asc
"); $price7D['data'] = array_column($data,'date_total_count');
$price7D['title'] = array_column($data,'date_str'); $dataMyM = date("Y-m-d",mktime(0, 0 , 0,date("m"),2,date("Y"))); $data = DB::select("
SELECT t1.date_str , COALESCE(t2.date_total_countss,0) as date_total_count
FROM(
SELECT @cdate:= date_add(@cdate,interval - 1 day) as date_str
FROM (SELECT @cdate:=date_add(CURDATE(),interval + 1 day) from lkx_orders) tmp1
WHERE date_format(@cdate,'%Y-%m-%d') >= '$dataMyM'
) t1
LEFT JOIN(
SELECT date_format(m.created_at, '%Y-%m-%d') as date_str , sum(price) as date_total_countss
FROM lkx_orders as m
WHERE date_format(m.created_at,'%Y-%m-%d') >= '$dataMyM' and m.status=1 and sid=$Sid
GROUP BY date_str
) t2
on t1.date_str = t2.date_str
order by t1.date_str asc
"); $priceMyM['data'] = array_column($data,'date_total_count');
$priceMyM['title'] = array_column($data,'date_str'); //获取上个月数据统计
$dataUpM = date("Y-m-d",mktime(0, 0 , 0,date("m")-1,30,date("Y"))); $Mnum = date("t",strtotime("-1 month")); $dataUpYm = date('Y-m',strtotime("-1 month")); $data = DB::select("
SELECT t1.date_str , COALESCE(t2.date_total_countss,0) as date_total_count
FROM(
SELECT @cdate:= date_add(@cdate,interval - 1 day) as date_str
FROM (SELECT @cdate:=date_add('$dataUpM',interval + 1 day) from lkx_orders) tmp1
limit $Mnum
) t1
LEFT JOIN(
SELECT date_format(m.created_at, '%Y-%m-%d') as date_str , sum(price) as date_total_countss
FROM lkx_orders as m
WHERE date_format(m.created_at,'%Y-%m') = '$dataUpYm'
GROUP BY date_str
) t2
on t1.date_str = t2.date_str
order by t1.date_str asc
"); $priceUpM['data'] = array_column($data,'date_total_count');
$priceUpM['title'] = array_column($data,'date_str'); return array(
'orderNum'=>$orderNum,
'priceMyM'=>$priceMyM,
'price7D'=>$price7D,
'priceUpM'=>$priceUpM,
);
}
}

新手经百度查询等方式写的、如有更好方案请指点一番...

关于sql时间方面的处理的更多相关文章

  1. 常用SQL时间格式SQLServer中文版的默认的日期字段datetime格式是yyyy-mm-d

    常用SQL时间格式 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() -- ::08.177 ...

  2. SQL 时间格式化函数发布

    SQL 时间格式化函数,有时候因某种需要需要格式化成需要的时间格式,需要的朋友可以收藏下,以备后用. SQL Server里面可能经常会用到的日期格式转换方法: sql server使用convert ...

  3. SQL 时间处理

    1.获取当前时间 GetDate() 2.获取当前年.月.日 DATEPART(yyyy,GetDate()).DATEPART(m,GetDate()).DATEPART(d,GetDate()) ...

  4. 转 sql 时间转换格式 convert(varchar(10),字段名,转换格式)

    convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime, ...

  5. SQL时间第二期_时间格式化

    0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)       1   101   美国   mm/dd/yyyy       ...

  6. SQL时间第一期_获取系统年月日时分秒

    select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) as '月',DateName ...

  7. sql时间格式

    取值后格式化 {:d}小型:如2005 {:D}大型:如2005年5月6日 {:f}完整型 当前时间获取 DateTime.Now.ToShortDateString 取值中格式化 SQL Serve ...

  8. 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)

    Java获得当前时间 java.util.Date date = new java.util.Date(); Timestamp time = new Timestamp(date.getTime() ...

  9. (转)sql 时间转换格式 convert(varchar(10),字段名,转换格式)

    convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121) CONVERT为日期转换函数,一般就是在时间类型(datetime ...

  10. SQL时间格式化

    1 取值后格式化 {:d}小型:如2005 {:D}大型:如2005年5月6日 {:f}完整型 2 当前时间获取 DateTime.Now.ToShortDateString 3 取值中格式化SQL ...

随机推荐

  1. 死磕rmi之远程对象

    远程对象 远程对象是啥 继承了UnicastRemoteObject的对象都可称为远程对象 让一个对象继承UnicastRemoteObject的能力,就是把自己发布出去. UnicastRemote ...

  2. wandb: Network error (ConnectionError), entering retry loop.

    超算使用wandb总是连接超时,设置为offline模式即可 import os import wandb os.environ["WANDB_API_KEY"] = 'KEY' ...

  3. $forceUpdate和this.$set('userInfo',name,'小红');

    在Vue官方文档中指出,$forceUpdate具有强制刷新的作用. 那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新. 但如果data中的变量为数组或对象,我们直接去给某个 ...

  4. vue 数据没更新/dom没更新/样式没更新的各种解决方式

    1.用 $forceUpdate() 强制更新 2.用 this.$set(obj, key, value)/vue.set(obj, key, value) 向响应式对象中添加一个 property ...

  5. C - Functions again CodeForces - 789C (dp、思维)

    C - Functions again CodeForces - 789C #include<iostream> #include<cstdio> #include<cm ...

  6. linux安装grafana成功后,登录成功,几天后无法访问

    页面提示: 解决方法: 扩展磁盘空间 检查浏览器版本:升级浏览器版本

  7. SAP MD04屏幕显示增强

    需求 在看物料MRP结果的时候,业务人员想要看到工单批次,工单批次是我们这边工单下达后传输到其他系统,然后由其他系统回传回来的. 开发步骤 主要使用二代增强出口:M61X0002 创建增强项目 事务码 ...

  8. docker swarm集群安装使用

    1.安装master docker swarm init --advertise-addr 10.98.10.186 Swarm initialized: current node (qemrm3oq ...

  9. 右键无法新建word文件怎么办?

      电脑用久了,总会出现奇奇怪怪的问题.   我最近遇到一个问题:鼠标右键无法新建word文件.如何解决此问题呢?   刚开始,我忍了.解决方法为:把word图标固定到任务栏,就好了呗,需要用的时候, ...

  10. centos8下安装gcc11

    最近的云服务器使用的centos8,c以前编译器对c++20的新特性支持的较少,当前最新版的gcc对c++20的支持还是可以的,于是准备体验一下,首要就是升级gcc gcc官网:https://gcc ...