关于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 ...
随机推荐
- SAP SPOOL_INTERNAL_ERROR
运行SE38程序 RSPO0041
- js 对象命名
JS 标识符的命名规则,即变量的命名规则: 标识符只能由字母.数字.下划线和'$'组成 数字不可以作为标识符的首字符 对象属性的命名规则 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括 ...
- More exceptional c++读书笔记【附高清PDF下载】
Part1我是在读完Scott Meyers的<Effective c++>之后才读到这本书的.能够讨论特定的主题而不是将一门语言作为一个整体来看待是我理解c++的首选方式,所以Sutte ...
- reids 启动方法
---恢复内容开始--- 在windows环境下启动redis服务,前提是你安装好了,启动如下: 一,进入redis的安装目录下,在地址栏输入"cmd",回车 二,然后会进入cmd ...
- AWG含义及尺寸电流对照表-转载
AWG含义及尺寸电流对照表 - 麦穗鱼~ - 博客园 (cnblogs.com) AWG(American wire gauge)美国线规,是一种区分导线直径的标准,又被称为 Brown & ...
- 初涉gulp
//文件结构 gulpfile.js var gulp = require('gulp'); var sass = require('gulp-sass'); //编译scss var cle ...
- linux办公
办公环境.生产环境: centos.redhat.big cloud 1.改PS1:生产主机的主机名太长了,每次显示占半行 [root@10.0.0.11 ~]$ echo $PS1 [\u@10.0 ...
- Flink RocksDB参数调优说明
参数名 说明 state.backend.rocksdb.block.blocksize block 的大小,默认值为4KB.在生产环境中总是会适当调大一些,一般32KB比较合适,对于机械硬盘可以再增 ...
- JQery easyUI 滚动分页
var s1 = new Date().getTime(); $(document).ready(function(){ var flag = true; //鼠标 ...
- efk部署
转载: https://www.cnblogs.com/liweiboy/p/16100002.html