关于sql时间方面的处理
查询大于时间两小时(例:订单设置两小时后过期
$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时间方面的处理的更多相关文章
- 常用SQL时间格式SQLServer中文版的默认的日期字段datetime格式是yyyy-mm-d
常用SQL时间格式 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() -- ::08.177 ...
- SQL 时间格式化函数发布
SQL 时间格式化函数,有时候因某种需要需要格式化成需要的时间格式,需要的朋友可以收藏下,以备后用. SQL Server里面可能经常会用到的日期格式转换方法: sql server使用convert ...
- SQL 时间处理
1.获取当前时间 GetDate() 2.获取当前年.月.日 DATEPART(yyyy,GetDate()).DATEPART(m,GetDate()).DATEPART(d,GetDate()) ...
- 转 sql 时间转换格式 convert(varchar(10),字段名,转换格式)
convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime, ...
- SQL时间第二期_时间格式化
0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ...
- SQL时间第一期_获取系统年月日时分秒
select GETDATE() as '当前日期',DateName(year,GetDate()) as '年',DateName(month,GetDate()) as '月',DateName ...
- sql时间格式
取值后格式化 {:d}小型:如2005 {:D}大型:如2005年5月6日 {:f}完整型 当前时间获取 DateTime.Now.ToShortDateString 取值中格式化 SQL Serve ...
- 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)
Java获得当前时间 java.util.Date date = new java.util.Date(); Timestamp time = new Timestamp(date.getTime() ...
- (转)sql 时间转换格式 convert(varchar(10),字段名,转换格式)
convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121) CONVERT为日期转换函数,一般就是在时间类型(datetime ...
- SQL时间格式化
1 取值后格式化 {:d}小型:如2005 {:D}大型:如2005年5月6日 {:f}完整型 2 当前时间获取 DateTime.Now.ToShortDateString 3 取值中格式化SQL ...
随机推荐
- 2023 年 CCF 春季测试赛模拟赛 - 1
T1 个人思路: 询问:求 \(1\) 到 \(t_i\) 路径上离 \(1\) 最远的 \(p\),使得 \(dis_{1,p} \times 2 \le d_i\).即 \(dis_{1,t} \ ...
- KCL v0.4.5 发布 - 更好的编写便利性改进,稳定性,体验提升与多平台支持
简介 KCL 团队很高兴地宣布 KCL v0.4.5 版本现在已经可用!本次发布主要为 KCL 语言编写便利性和稳定性提升,错误信息改进以及更多平台包括 windows 版本支持以及更多下载方式支持. ...
- org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active解决办法
解决办法 在配置elasticsearch.yml中加上 ingest.geoip.downloader.enabled: false
- JavaSE——复杂对象数组练习
定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同. 学生的属性:学号,姓名,年龄. 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断. 要求2 ...
- Kubernetes 1.26.0 集群部署Prometheus监控
前言 该存储库收集 Kubernetes 清单.Grafana仪表板和Prometheus 规则,结合文档和脚本,使用Prometheus Operator提供易于操作的端到端 Kubernetes ...
- cross-env 运行跨平台设置和使用环境变量的脚本
1.1 cross-env是什么 运行跨平台设置和使用环境变量的脚本 1.2 出现原因 当您使用 NODE_ENV=production, 来设置环境变量时,大多数 Windows 命令提示将会阻塞( ...
- Linux系统Shell脚本第六章:文件三剑客之sed
Shell编程三剑客之sed 前言 一.Sed编辑器 (1)Sed概述 (2)Sed工作流程 (3)Sed基本语法 二.Sed用法示例 (1)Sed输出指定行 (2)插入符合条件的行 (3)删除符合条 ...
- filebeat+Elk实现日志收集并使用kibana展示
工作流程图 通过Filegeat收集日志,将日志的数据推送到kafka然后通过logstash去消费发送到Es,再通过索引的方式将数据用kibana进行展示: 1.部署测试机器规划 ip ...
- c# message (转)
一.消息概述 Windows下应用程序的执行是通过消息驱动的.消息是整个应用程序的工作引擎,我们需要理解掌握我们使用的编程语言是如何封装消息的原理. 什么是消息(Message) 消息就是通知和命令. ...
- Linux-jar操作脚本
service.sh 使用说明: ./service.sh start ./service.sh stop #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME= ...