mysql實現查詢當天, 昨天, 上週 ,上月 本季度, 本年,(日期函數)

QUARTER(date)
Returns the quarter of the year for date, in the range 1 to 4.
返回日期的一年中的季度,範圍爲1到4。

ADDDATE(d,n)(date)
計算起始日期 d 加上 n 天的日期
SELECT ADDDATE(“2017-06-15”, INTERVAL 10 DAY);
->2017-06-25
DATEDIFF(d1,d2)
計算日期 d1->d2 之間相隔的天數
SELECT DATEDIFF(‘2001-01-01’,‘2001-02-02’)
-> -32
DATE_SUB(date,INTERVAL expr type)
函數從日期減去指定的時間間隔。
Orders 表中 OrderDate 字段減去 2 天:

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM Orders
DAY(d)
返回日期值 d 的日期部分
SELECT DAY(“2017-06-15”);
-> 15
DAYNAME(d)
返回日期 d 是星期幾,如 Monday,Tuesday
SELECT DAYNAME(‘2011-11-11 11:11:11’)
->Friday
DAYOFMONTH(d)
計算日期 d 是本月的第幾天
SELECT DAYOFMONTH(‘2011-11-11 11:11:11’)
->11
DAYOFWEEK(d)
日期 d 今天是星期幾,1 星期日,2 星期一,以此類推
SELECT DAYOFWEEK(‘2011-11-11 11:11:11’)
->6
DAYOFYEAR(d)
計算日期 d 是本年的第幾天
SELECT DAYOFYEAR(‘2011-11-11 11:11:11’)
->315

今天

select * from 表名 where to_days(時間字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 時間字段名) <= 1  

最近7天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間字段名)  

查詢本週

SELECT * FROM mrt_product_out ou WHERE YEARWEEK(date_format(ou.out_Date,'%Y-%m-%d')) = YEARWEEK(now());

近30天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間字段名) 

本月

SELECT
	*
FROM
	表名
WHERE
	DATE_FORMAT(時間字段名, ‘ % Y % m’) = DATE_FORMAT(CURDATE(), ‘ % Y % m’)

上一月

SELECT
	*
FROM
	表名
WHERE
	PERIOD_DIFF(
		date_format(now(), ‘ % Y % m’),
		date_format(時間字段名, ‘ % Y % m’)
	) = 1

同時,再附上 一個 mysql官方的相關document

#查詢本季度數據

SELECT
	*
FROM
	`ht_invoice_information`
WHERE
	QUARTER (create_date) = QUARTER (now());


#查詢上季度數據

  SELECT
	*
FROM
	`ht_invoice_information`
WHERE
	QUARTER (create_date) = QUARTER (
		DATE_SUB(now(), INTERVAL 1 QUARTER)
	);

#查詢本年數據

select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

#查詢上年數據

SELECT
	*
FROM
	`ht_invoice_information`
WHERE
	YEAR (create_date) = YEAR (
		date_sub(now(), INTERVAL 1 YEAR)
	);

查詢當前這周的數據

SELECT
	NAME,
	submittime
FROM
	enterprise
WHERE
	YEARWEEK(
		date_format(submittime, '%Y-%m-%d')
	) = YEARWEEK(now());

查詢上週的數據

SELECT
	NAME,
	submittime
FROM
	enterprise
WHERE
	YEARWEEK(
		date_format(submittime, '%Y-%m-%d')
	) = YEARWEEK(now()) - 1;

查詢當前月份的數據

SELECT
	NAME,
	submittime
FROM
	enterprise
WHERE
	date_format(submittime, '%Y-%m') = date_format(now(), '%Y-%m')

查詢距離當前現在6個月的數據

SELECT
	NAME,
	submittime
FROM
	enterprise
WHERE
	submittime BETWEEN date_sub(now(), INTERVAL 6 MONTH)
AND now();

查詢上個月的數據

SELECT
	NAME,
	submittime
FROM
	enterprise
WHERE
	date_format(submittime, '%Y-%m') = date_format(
		DATE_SUB(curdate(), INTERVAL 1 MONTH),
		'%Y-%m'
	)
SELECT
	*
FROM
	` user `
WHERE
	DATE_FORMAT(pudate, ' %Y%m ') = DATE_FORMAT(CURDATE(), ' %Y%m ');

SELECT
	*
FROM
	USER
WHERE
	WEEKOFYEAR(
		FROM_UNIXTIME(pudate, '%y-%m-%d')
	) = WEEKOFYEAR(now()) SELECT
		*
	FROM
		USER
	WHERE
		MONTH (
			FROM_UNIXTIME(pudate, ' %y-%m-%d ')
		) = MONTH (now()) SELECT
			*
		FROM
			[ USER ]
		WHERE
			YEAR (
				FROM_UNIXTIME(pudate, ' %y-%m-%d ')
			) = YEAR (now())
		AND MONTH (
			FROM_UNIXTIME(pudate, ' %y-%m-%d ')
		) = MONTH (now()) SELECT
			*
		FROM
			[ USER ]
		WHERE
			pudate BETWEEN 上月最後一天
		AND 下月第一天
		WHERE
			date(regdate) = curdate();

SELECT
	*
FROM
	test
WHERE
	YEAR (regdate) = YEAR (now())
AND MONTH (regdate) = MONTH (now())
AND DAY (regdate) = DAY (now()) SELECT
	date(c_instime),
	curdate()
FROM
	`t_score`
WHERE
	1
LIMIT 0,
 30

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章