Mysql 选择两周前的查询
在我的数据库表中,我有一个日期字段(varchar字段以yy-mm-dd格式保存日期),现在我想选择两周前的记录。Mysql 选择两周前的查询,mysql,select,date-arithmetic,Mysql,Select,Date Arithmetic,在我的数据库表中,我有一个日期字段(varchar字段以yy-mm-dd格式保存日期),现在我想选择两周前的记录。 我该怎么做呢?理想情况下,您应该使用日期类型来存储日期,但事实并非如此,您应该研究到日期的转换,然后进行比较 select * from yourtable where cast (yourdate as Date) BETWEEN Date_Add(CURDATE(), INTERVAL -21 Day) and Date_Add(CURDATE(), INTERVAL -14
我该怎么做呢?理想情况下,您应该使用日期类型来存储日期,但事实并非如此,您应该研究到日期的转换,然后进行比较
select * from yourtable where cast (yourdate as Date) BETWEEN Date_Add(CURDATE(), INTERVAL -21 Day) and Date_Add(CURDATE(), INTERVAL -14 Day)
注意,这是未经测试的,可能需要一些调整,但应该让您大致了解需要做什么
此外,如果可能的话,您应该真正考虑将varchar字段转换为日期字段……它们有日期类型来防止这种情况发生,尽管我知道更改字段类型并不总是可能的。您只需使用
ADDDATE
即可在14天前获得。将字符串与日期进行比较将起作用
SELECT *
FROM your_table
WHERE your_date >= ADDDATE(NOW(), -14) AND your_date < NOW()
选择*
从你的桌子上
其中您的_date>=ADDDATE(NOW(),-14)和您的_date
隐式日期算法在MySQL中相当灵活。您可以将日期作为字符串进行比较,而无需显式使用CAST()
或DATE()
,但您相信MySQL能够正确解释您的格式。幸运的是,在yy-mm-dd
上就可以了
我建议在和间隔之间使用,以便您的查询易于阅读;例如:
SELECT * FROM Holidays
WHERE Date BETWEEN (NOW() - INTERVAL 14 DAY) AND NOW();
在
之间使用的唯一诀窍是必须将下限放在第一位,将上限放在第二位;例如,如果在5和2之间写入,则其计算结果始终为FALSE
,因为没有任何值可以大于或等于5,同时也小于或等于2
,以及MySQL中的列表
请注意,表达式NOW()-INTERVAL 14 DAY
周围的括号不是必需的,但我建议在此处使用它们纯粹是为了清楚起见。它使谓词子句在没有适当语法突出显示的情况下更容易阅读,但要花费两个字符。我将其用于过去的select数据
SELECT * FROM Holidays
WHERE a.dDate >= DATE( NOW( ) ) - INTERVAL 14
DAY AND a.dDate <= DATE( NOW( ) ) - INTERVAL 8
从假日中选择*
其中a.dDate>=日期(现在())-间隔14
DAY和a.dDate您的意思是返回两周并选择该周发生的任何记录吗?您要查找的术语是“日期算术”。注释的可能副本,日期存储为varchar,因此必须首先执行cast。您可以按varchar比较日期