我的'dob'字段是varchar类型,数据在我的数据库中是'12 / 07/1988'和'10 / 30/1988'。
我想在'dob'日期范围内过滤记录库。我的输入日期范围是'01 / 01/1988'和'31 / 12/1988',但所有其他记录也都出来了。
这是我的代码,任何人都可以提供帮助吗?
<p>日本刀日本刀日本刀日本刀</p>
谢谢。
答案 0 :(得分:1)
尝试一下......
SELECT dob FROM tblcustomers where DATE_FORMAT(STR_TO_DATE(dob, '%m/%d/%Y'), '%Y-%m-%d') between '1988-01-01' and '1988-12-31'
答案 1 :(得分:0)
日期范围适用于sql日期类型而不是varchar,因此首先将其更改为日期类型并以yyyy-mm-dd格式插入日期然后您可以使用它将起作用的范围
答案 2 :(得分:0)
你可以试试这个。我希望它会对你有所帮助。
$from_date = date("Y-m-d",strtotime('01/01/1988'));
$to_date = date("Y-m-d",strtotime('31/12/1988'));
$query = "SELECT * FROM tblcustomers WHERE from_date >= '".$from_date."' AND to_date <= '".$to_date."'";
答案 3 :(得分:0)
最好使用DATE / DATETIME而不是VARCHAR,否则当您有查询时,它会浪费时间将字符串转换为日期。
您只需将dob字段更改为DATE
即可然后像这样过滤记录
SELECT * FROM tblcustomers WHERE dob BETWEEN '1988-01-01' AND '1988-12-31'
注意:使用BETWEEN ... AND,'1988-01-01'&amp; '1988-12-31'不包括
因此您可以减少开始日1天并增加结束日1天 它可能看起来像这样
SELECT * FROM tblcustomers WHERE dob BETWEEN '1987-12-31' AND '1989-01-01'
或类似于你所做的更简单的方式,这也是可能的
SELECT * FROM tblcustomers WHERE dob >= '1988-01-01' AND dob <= '1988-12-31'