mysql中怎么查询一周内,三个月内,半年内的数据

mysql中怎么查询一周内,三个月内,半年内的数据,第1张

mysql中怎么查询一周内,三个月内\x0d\使用sql语句查询日期在一周内的数据\x0d\select from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据\x0d\select from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有数据\x0d\ SELECT FROM A where datediff(d,datetime,getdate()) 回答于 2022-12-11

date_sub(curdate(), interval dayofweek(curdate())+6 day) 上周初

date_sub(curdate(), interval dayofweek(curdate())-1 day) 上周末

select,projectID empName,weekend from table group by projectID,empName,weekend order by weekend

试试行不行。这个有可能不是按周一到周日顺序排,weekend是字符串,你百度一下mysql字符串怎么比较大小。

MySQL中常用日期时间函数:

下面的查询选择了所有记录,其date_col的值是在最后30天以内:

mysql> SELECT something FROM table

WHERE TO_DAYS(NOW()) - TO_DAYS(date_col)<= 30;

DAYOFWEEK(date)

返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

mysql> select DAYOFWEEK('1998-02-03');

-> 3

WEEKDAY(date)

返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

mysql> select WEEKDAY('1997-10-04 22:23:00');

-> 5

mysql> select WEEKDAY('1997-11-05');

-> 2

DAYOFMONTH(date)

返回date的月份中日期,在1到31范围内。

mysql> select DAYOFMONTH('1998-02-03');

-> 3

DAYOFYEAR(date)

返回date在一年中的日数, 在1到366范围内。

mysql> select DAYOFYEAR('1998-02-03');

-> 34

MONTH(date)

返回date的月份,范围1到12。

mysql> select MONTH('1998-02-03');

-> 2

DAYNAME(date)

返回date的星期名字。

mysql> select DAYNAME("1998-02-05");

-> 'Thursday'

MONTHNAME(date)

返回date的月份名字。

mysql> select MONTHNAME("1998-02-05");

-> 'February'

QUARTER(date)

返回date一年中的季度,范围1到4。

mysql> select QUARTER('98-04-01');

-> 2

WEEK(date)

WEEK(date,first)

对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。

mysql> select WEEK('1998-02-20');

-> 7

mysql> select WEEK('1998-02-20',0);

-> 7

mysql> select WEEK('1998-02-20',1);

-> 8

YEAR(date)

返回date的年份,范围在1000到9999。

mysql> select YEAR('98-02-03');

-> 1998

HOUR(time)

返回time的小时,范围是0到23。

mysql> select HOUR('10:05:03');

-> 10

MINUTE(time)

返回time的分钟,范围是0到59。

mysql> select MINUTE('98-02-03 10:05:03');

-> 5

SECOND(time)

回来time的秒数,范围是0到59。

mysql> select SECOND('10:05:03');

-> 3

PERIOD_ADD(P,N)

增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。

mysql> select PERIOD_ADD(9801,2);

-> 199803

PERIOD_DIFF(P1,P2)

返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。

mysql> select PERIOD_DIFF(9802,199703);

-> 11

DATE_ADD(date,INTERVAL expr type)

DATE_SUB(date,INTERVAL expr type)

ADDDATE(date,INTERVAL expr type)

SUBDATE(date,INTERVAL expr type)

这些功能执行日期运算。对于MySQL 322,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。

  select  datepart(weekday,dateadd(day,60,getdate()))

---我用当前时间做的例子,得出来的是2,也就是星期一, 星期一到日分别是2,3,4,5,6,7,1

首先要考虑给数据库减压,意思就是让数据库做最简单的事情。你可以把条件在php里边组装好,然后让mysql只单一的执行查询就好了,php的时间代码给你贴一下吧

<php

date_default_timezone_set('Asia/Shanghai'); 

echo "今天:"date("Y-m-d H:i:s")"<br>";     

echo "昨天:"date("Y-m-d",strtotime("-1 day")), "<br>";     

echo "明天:"date("Y-m-d",strtotime("+1 day")) "<br>";  

echo "一周后:"date("Y-m-d",strtotime("+1 week")) "<br>"; 

echo "一周前:"date("Y-m-d",strtotime("-1 week")) "<br>";    

echo "一周零两天四小时两秒后:"date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")) "<br>";     

echo "下个星期四:"date("Y-m-d",strtotime("next Thursday")) "<br>";     

echo "上个周一:"date("Y-m-d",strtotime("last Monday"))"<br>";     

echo "一个月前:"date("Y-m-d",strtotime("last month"))"<br>";     

echo "一个月后:"date("Y-m-d",strtotime("+1 month"))"<br>";     

echo "十年后:"date("Y-m-d",strtotime("+10 year"))"<br>"; 

echo '<hr/>';

//php获取今日开始时间戳和结束时间戳 

$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));

$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;

echo "今日开始时间戳和结束时间戳",'开始:',$beginToday,'结束:',$endToday,'<br/>';

echo "今日开始时间:",date("Y-m-d H:i:s",$beginToday),'<br/>';

echo "今日结束时间:",date("Y-m-d H:i:s",$endToday),'<br/>';

echo '<hr/>';

//php获取昨日起始时间戳和结束时间戳

$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));

$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1; 

echo "昨日开始时间戳和结束时间戳",'开始:',$beginYesterday,'结束:',$endYesterday,'<br/>';

echo "昨日开始时间:",date("Y-m-d H:i:s",$beginYesterday),'<br/>';

echo "昨日结束时间:",date("Y-m-d H:i:s",$endYesterday),'<br/>';

echo '<hr/>';

//php获取上周起始时间戳和结束时间戳

$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));

$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));

echo "上周开始时间戳和结束时间戳",'开始:',$beginLastweek,'结束:',$endLastweek,'<br/>';

echo "上周开始时间:",date("Y-m-d H:i:s",$beginLastweek),'<br/>';

echo "上周结束时间:",date("Y-m-d H:i:s",$endLastweek),'<br/>';

echo '<hr/>';

//php获取本月起始时间戳和结束时间戳

$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));

$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));

echo "本月开始时间戳和结束时间戳",'开始:',$beginThismonth,'结束:',$endThismonth,'<br/>';

echo "本月开始时间:",date("Y-m-d H:i:s",$beginThismonth),'<br/>';

echo "本月结束时间:",date("Y-m-d H:i:s",$endThismonth),'<br/>';

>

看看这样讲能明白不。

WeeK函数有如下参数,具体描述如下:

参数值 每周第一天是星期几 返回值 范围 第一周是怎么计算的?

0 星期天 0-53 遇到本年的第一个星期天开始,是第一周。前面的计算为第0周。

1 星期一 0-53 假如第一周能超过3天,那么计算为本年的第一周。否则为第0周可以理解为如果1月1号~4号是星期一,那么本年第一周开始。(之前的是第零周)如果1月5号以后是星期一,那么现在开始,是本年的第二周了,之前的是第一周。

2 星期天 1-53 遇到本年的第一个星期天开始,是第一周。前面的计算为上年度的第5x周。

3 星期一 1-53 假如第一周能超过3天,那么计算为本年的第一周。否则为上年度的第5x周。可以理解为如果1月1号~4号是星期一,那么本年第一周开始。(之前的是第5x周)如果1月5号以后是星期一,那么现在开始,是本年的第二周了,之前的是第一周。

4 星期天 0-53 假如第一周能超过3天,那么计算为本年的第一周。否则为第0周可以理解为如果1月1号~4号是星期天,那么本年第一周开始。(之前的是第零周)如果1月5号以后是星期天,那么现在开始,是本年的第二周了,之前的是第一周。

5 星期一 0-53 遇到本年的第一个星期一开始,是第一周。前面的计算为第0周。

6 星期天 1-53 假如第一周能超过3天,那么计算为本年的第一周。否则为上年度的第5x周。可以理解为如果1月1号~4号是星期天,那么本年第一周开始。(之前的是第5x周)如果1月5号以后是星期天,那么现在开始,是本年的第二周了,之前的是第一周。

7 星期一 1-53 遇到本年的第一个星期一开始,是第一周。前面的计算为上年度的第5x周。

以上就是关于mysql中怎么查询一周内,三个月内,半年内的数据全部的内容,包括:mysql中怎么查询一周内,三个月内,半年内的数据、请问mysql查询上周数据的where条件怎么写(create_date)、mysql如何让行显示星期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9477260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存