在mysql中转换日期

时间:2018-06-05 04:21:11

标签: php mysql cakephp-1.3

我的'dob'字段是varchar类型,数据在我的数据库中是'12 / 07/1988'和'10 / 30/1988'。

我想在'dob'日期范围内过滤记录库。我的输入日期范围是'01 / 01/1988'和'31 / 12/1988',但所有其他记录也都出来了。

这是我的代码,任何人都可以提供帮助吗?

<p>日本刀日本刀日本刀日本刀</p>

谢谢。

4 个答案:

答案 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'