這裡做了幾個測試
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6';
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6 00:00:00';
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6 18:15:00';
select * from simingpai where DATE(createTime) >= '2015-9-6';
select * from simingpai where DATE(createTime) >= '2015-9-6 00:00:00';
select * from simingpai where DATE(createTime) >= '2015-9-6 00:00:01';
select * from simingpai where DATE(createTime) >= '2015-9-6 18:15:00';
這幾條文法都沒有問題,TIMESTAMP類型支援時分秒,DATE類型第一條和第二條輸出結果相同(估計是忽略了後面的時分秒),但是第三條和第四條語句就會報錯。應該是不支援時分秒。
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6;
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6 00:00:00;
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6 18:15:00;
select * from simingpai where Date(createTime) >= 2015-9-6;
select * from simingpai where DATE(createTime) >= 2015-9-6 00:00:00;
select * from simingpai where DATE(createTime) >= 2015-9-6 00:00:01;
select * from simingpai where DATE(createTime) >= 2015-9-6 18:15:00;
這裡的SQL語句中TIMESTAMP類型和DATE類型的第一條語句能輸出結果,其他的都不正确。這種格式應該不支援時分秒。
按照時間進行查詢
查詢當天的所有資料
select * from tg_winner where year(createTime)=year(now()) and month(createTime)=month(now()) and day(createTime)=day(now());
select * from tg_winner where to_days(createTime) = to_days(now());
select * from tg_winner where date(createTime) = curdate();
查詢某天的所有資料
select * from tg_winner where DATE(createTime) = '2015-9-6';
select * from tg_winner where to_days(createTime) = to_days('2015-09-06');
select * from tg_winner where createTime = date_format(#{createTime},'%Y-%m-%d %H:%i:%s');
#{createTime}為Mybatis的.xml檔案中實體類對應的Date類型的字段。即要傳入的日期類型的變量
mysql查詢 昨天 一周前 一月前 一年前的資料
mysql 昨天 一周前 一月前 一年前的資料 這裡主要用到了DATE_SUB,
參考如下
SELECT * FROM tg_winner
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR
注意:如果資料庫中時間以UNIX時間戳的形式存放的話,在時間對比上需要更改為統一格式:
DATE_SUB()傳回的是格式化後的時間:2014-05-17
需要用UNIX_TIMESTAMP()轉化為UNIX時間戳形式對比:
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
createTime為資料庫的時間字段
轉載于:https://www.cnblogs.com/onlymate/p/4789832.html