我需要從當前月份的第一天到當天的MySQL數據庫中選擇數據。如何獲得當月的第一天?
select*from table_name
where date between "1st day of current month" and "current day"
有人可以提供此查詢的工作示例嗎?
我需要從當前月份的第一天到當天的MySQL數據庫中選擇數據。如何獲得當月的第一天?
select*from table_name
where date between "1st day of current month" and "current day"
有人可以提供此查詢的工作示例嗎?
select * from table_name
where (date between DATE_ADD(LAST_DAY(DATE_SUB(CURDATE(), interval 30 day), interval 1 day) AND CURDATE())
或者更好:
select * from table_name
where (date between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW())
select * from table_name
where `date` between curdate() - dayofmonth(curdate()) + 1
and curdate()
select * from table
where date between
(date_add (CURRENT_DATE, INTERVAL(1 - DAYOFMonth(CURRENT_DATE)) day)) and current_date;
我一直在尋找的地方,我需要用一個月的第一天,我的查詢類似的查詢。 last_day
功能不適用於我,但DAYOFMONTH
派上用場。
因此,如果有人正在尋找同樣的問題,下面的代碼返回當前月份的第一天的日期。
SELECT DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY);
日期列有當月的第一天比較:
select * from table_name where date between
DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY) and CURRENT_DATE
爲MySQL當月和當年的,完整的解決方案,這使得使用索引的正確以及:)
-- Current month
SELECT id, timestampfield
FROM table1
WHERE timestampfield >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY)
AND timestampfield <= LAST_DAY(CURRENT_DATE);
-- Current year
SELECT id, timestampfield
FROM table1
WHERE timestampfield >= DATE_SUB(CURRENT_DATE, INTERVAL DAYOFYEAR(CURRENT_DATE)-1 DAY)
AND timestampfield <= LAST_DAY(CURRENT_DATE);
SET @date:='2012-07-11';
SELECT date_add(date_add(LAST_DAY(@date),interval 1 DAY),
interval -1 MONTH) AS first_day
一個不太正統的方法可能是
SELECT * FROM table_name
WHERE LEFT(table_name.date, 7) = LEFT(CURDATE(), 7)
AND table_name.date <= CURDATE();
作爲日期介於一個月的第一天之間,現在相當於本月和之前的日期。不過,我確實覺得這比其他方法更容易。
試試這個:
SET @StartDate = DATE_SUB(DATE(NOW()),INTERVAL (DAY(NOW())-1) DAY);
SET @EndDate = ADDDATE(CURDATE(),1);
select * from table where (date >= @StartDate and date < @EndDate);
我用下面的查詢。它在過去對我很好。
select date(now()) - interval day(now()) day + interval 1 day
SELECT date_sub(current_date(),interval dayofmonth(current_date())-1 day) as first_day_of_month;
select * from <table>
where <dateValue> between last_day(curdate() - interval 1 month + interval 1 day)
and curdate();
可能引用http://stackoverflow.com/questions/3887509/mysqls-now-1-day – Giberno 2012-08-04 11:22:09