繁体   English   中英

日期搜索Sql查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM