Mysql 选择日期(字符串日期)<;日期(带日期的文本列)
我有一个表,其中有一列文本类型,我在插入查询中使用Mysql 选择日期(字符串日期)<;日期(带日期的文本列),mysql,date,datetime,select,Mysql,Date,Datetime,Select,我有一个表,其中有一列文本类型,我在插入查询中使用NOW()存储各种设置,包括日期 现在,我想从该表中获取该列在特定日期(例如2012-09-19)之前的所有行 通过DATE(DATE\u column)进行比较如果DATE\u column确实是DATE类型,则不需要对其运行DATE() 还要注意,在DATE_列上运行DATE()将阻止MySQL使用任何索引,因此您将执行表扫描 尝试: 其中日期栏
NOW()
存储各种设置,包括日期
现在,我想从该表中获取该列在特定日期(例如2012-09-19)之前的所有行
通过
DATE(DATE\u column)进行比较如果DATE\u column确实是DATE类型,则不需要对其运行DATE()
还要注意,在DATE_列上运行DATE()将阻止MySQL使用任何索引,因此您将执行表扫描
尝试:
其中日期栏<'2012-09-19'
避免在列类型周围放置函数(WHERE FUNCTION(col)…
)。这会降低性能。您希望有一个具有域完整性的表,这意味着如果您存储的是日期,则它是date
类型
要选择与日期匹配的记录,只需将YYYY-MM-DD日期用引号括起来:
SELECT * FROM table WHERE date_column < '2012-09-19'
从日期列<'2012-09-19'所在的表格中选择*
您可以自己添加答案并接受它,这样人们就可以看到问题得到了回答。请查看STR_TO_DATE函数。但您需要使用where子句将行限制为日期在中的行。大概有一个属性名列。希望你在这件事上吸取了教训。这其中有两个典型的数据库设计错误。
SELECT * FROM table WHERE DATE(date_column)<DATE('2012-09-19');
WHERE date_column < '2012-09-19'
SELECT * FROM table WHERE date_column < '2012-09-19'