[英]Date search Sql Query
我将时间戳存储在(INT)列中的mysql数据库中,并且我想搜索日期之间的行。 任何人都将帮助Sql查询来查找两个日期之间的行吗?
输入的日期如下
FROM DATE = 15-10-2011
END DATE = 01-11-2011
这取决于您使用哪种算法将日期字符串转换为int
值。
例如,如果算法是运动的:如果将一天(例如15-10-2011
)转换为n
(例如5037
),则第二天( 16-10-2011
)始终转换为n+1
(所以5038
在这个例子中。)
那么您可以使用:
WHERE IntField BETWEEN MySpecialConvertDateToIntFunction('15-10-2011')
AND MySpecialConvertDateToIntFunction('01-11-2011')
如果您的字段将不同的timsetamps存储为不同的整数(并且转换是单调的),则可以将上面的代码稍微更改为:
WHERE IntField >= MySpecial...Function('15-10-2011')
AND IntField < MySpecial...Function('02-11-2011') --- notice the date+1
但是通常最好使用MySQL DATE
类型的字段来存储日期。 除非您要存储日期在课程结束前1000
或之后9999
。
如果要存储时间戳,则还有TIMESTAMP
类型。 阅读
MySQL文档:DATETIME,DATE和TIMESTAMP类型
您可以使用BETWEEN
运算符,该运算符在两个值之间选择一个数据范围。 值可以是数字,文本或日期。
您可以在此处看到:
http://w3schools.com/sql/sql_between.asp
我会要求您将数据类型设置为timestamp / datestamp,然后
//php code
$date1=date ('Y-m-d' , strtotime ( "15-10-2011") );
$date2=date ('Y-m-d' , strtotime ( "01-11-2011") );
//sql code
SELECT * FROM tbl_mytbl WHERE DATE(attr_date) <'$date2' AND DATE(attr_date) >'$date1'
能否使用mysql FROM_UNIXTIME 函数dev.mysql.com-函数from_unixtime
SELECT *
FROM 'table'
WHERE FROM_UNIXTIME(intTimestamp)
BETWEEN
date ('Y-m-d' , strtotime ( '15-10-2011') )
AND ('Y-m-d' , strtotime ( '01-11-2011'));
我在输入日期时犯了一个错误,但已解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.