【发布时间】:2011-07-08 03:00:10
【问题描述】:
以下最好的方法是:
SELECT * FROM users WHERE created >= today;
注意:created 是一个日期时间字段。
【问题讨论】:
以下最好的方法是:
SELECT * FROM users WHERE created >= today;
注意:created 是一个日期时间字段。
【问题讨论】:
SELECT * FROM users WHERE created >= NOW();
如果列是日期时间类型。
【讨论】:
SELECT * FROM users WHERE created >= CURDATE();
但我认为你的意思是created < today
【讨论】:
CURDATE() 只返回日期而不是时间
SELECT * FROM users WHERE created >= now()
【讨论】:
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW())
阅读更多: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
【讨论】:
如果'created'是日期时间类型
SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
CURDATE() 也表示 '2013-05-09 00:00:00'
【讨论】:
你可以返回所有行,而不是在 if 语句中使用 php datediff 函数,尽管这会给服务器带来额外的负载。
if(dateDiff(date("Y/m/d"), $row['date']) <=0 ){
}else{
echo " info here";
}
【讨论】:
SELECT * FROM table_name WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) , '-', SUBSTRING( json_date, 7, 2 ) , '-', SUBSTRING(json_date, 3, 2 ) ) >= NOW();
json_date ["05/11/2011"]
【讨论】:
下面的代码对我有用。
declare @Today date
Set @Today=getdate() --date will equal today
Select *
FROM table_name
WHERE created <= @Today
【讨论】:
如果列有索引并且在列上应用了函数,则索引不起作用并发生全表扫描,导致查询非常慢。
错误查询;这将忽略 date_time 列上的索引
select * from users
where Date(date_time) > '2010-10-10'
要利用 datetime 类型的列 created 上的索引与今天/当前日期进行比较,可以使用以下方法。
OP 解决方案:
select * from users
where created > CONCAT(CURDATE(), ' 23:59:59')
获取今天数据的样本:
select * from users
where
created >= CONCAT(CURDATE(), ' 00:00:00') AND
created <= CONCAT(CURDATE(), ' 23:59:59')
或简称 BETWEEN
select * from users
where created BETWEEN
CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59')
提示: 如果您必须对日期和时间进行大量计算或查询,那么将日期和时间保存在单独的列中非常有用。 (分而治之)
【讨论】:
标记的答案具有误导性。提出的问题是DateTime,但表示需要的只是CURDATE()。
对此的最短且正确的答案是:
SELECT * FROM users WHERE created >= CURRENT_TIMESTAMP;
【讨论】: