假设我有一个日期2010-07-29.现在我想检查一天的结果.怎么做
例如,
SELECT * from table where date = date("2010-07-29")
前一天怎么做,而不改字符串“2010-07-29”?
我搜索并从网上得到一些建议,我试过
SELECT * from table where date = (date("2010-07-29") - 1 Day)
但失败了.
解决方法
MysqL的
SELECT * FROM TABLE t WHERE t.date BETWEEN DATE_SUB('2010-07-29',INTERVAL 1 DAY) AND '2010-07-29'
如果要添加一天(并反转BETWEEN参数),请将DATE_SUB更改为DATE_ADD.
sql Server
SELECT * FROM TABLE t WHERE t.date BETWEEN DATEADD(dd,-1,'2010-07-29') AND '2010-07-29'
神谕
SELECT * FROM TABLE t WHERE t.date BETWEEN TO_DATE('2010-07-29','YYYY-MM-DD') - 1 AND TO_DATE('2010-07-29','YYYY-MM-DD')
我使用BETWEEN,因为date列可能是DATETIME(在MysqL和sql Server上,与Oracle上的DATE),其中包括时间部分,因此等于意味着该值必须等于完全相同.这些查询给你一天的跨度.