假设我有一段代码在循环中运行,其中$fid
在每一轮都会收到一个值:
$result2 = mysql_query( "SELECT date_create FROM users WHERE id = $fid");
现在,date_create将采用例如的格式
2012-08-16 20:13:49
我的问题是,如何检查该日期是否在2012-08-31之前,如2012-08-10?
我的完整代码,以防有人问起。
$query = "(SELECT distinct fid FROM coin WHERE uid = 59 )";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result))
{
$fid = $rows['fid'];
echo 'fid || '.$fid;
$result2 = mysql_query( "SELECT id, date_create FROM users WHERE id = $fid");
$rows2 = mysql_fetch_array($result2);
echo " || users id : " . $rows2['id'];
if( $rows2['date_create'] < "2012-8-31") // How do i get something like this?
{
echo " || date_create : " . $rows2['date_create'] ." True";
}
else
{
echo " || date_create : " . $rows2['date_create'] . "False";
}
l();
}
到目前为止,我得到的结果是:
fid || 1112 || users id : 1112 || date_create : 2012-08-16 20:13:49 false <--
fid || 1113 || users id : 1113 || date_create : 2012-08-16 20:14:11 false <--
fid || 1115 || users id : 1115 || date_create : 2012-08-16 20:14:21 false <--
fid || 1117 || users id : 1117 || date_create : 2012-08-16 20:14:38 false <--
fid || 1118 || users id : 1118 || date_create : 2012-08-16 20:15:03 false <--
fid || 1119 || users id : 1119 || date_create : 2012-08-16 20:15:10 false <--
如果你也能提供一种检查时间的方法,n.b将不胜感激。这将是额外的:D
您可以通过转换日期/时间字符串并使用strtotime()进行比较来完成此操作。使用这种方法,你也可以调整它以进行几秒钟的比较:
//this effectively checks to see that the time is greater than '2012-08-16 20:13:49'
//the total calculated time on the RHS of the >= operator is effectively '2012-08-16 20:13:49'
//hence, this will echo 'YES'
//this is of the form: hours, minutes, seconds
$time_difference = (44 * 60 * 60) + (13 * 60) + 49;
if (strtotime('2012-08-16 20:13:49') >= strtotime('2012-08-15') + $time_difference)
{
echo 'YEAH';
}
else
{
echo 'NO';
}
更新:
来自strtotime()上的PHP文档:
时间戳的有效范围通常从1901年12月13日星期五开始20:45:54 UTC至2038年1月19日星期二03:14:07 UTC。(这些是日期对应于32位签名的最小值和最大值整数。)此外并非所有平台都支持负时间戳,因此,您的日期范围可能被限制为不早于Unix纪元这意味着,例如,1970年1月1日之前的日期将不起作用在Windows、一些Linux发行版和其他一些操作系统上系统。不过,PHP 5.1.0和更新版本克服了这一限制。
对于64位版本的PHP,时间戳的有效范围为实际上是无限的,因为64位可以表示大约293亿年。
您可以使用这样的东西:
$result = mysql_query($query);
$chk = strtotime("2012-08-31");
while( $rows = mysql_fetch_array($result) ) {
$fid = $rows['fid'];
echo 'fid || '.$fid;
$result2 = mysql_query( "SELECT id, date_create FROM users WHERE id = $fid");
$rows2 = mysql_fetch_array($result2);
echo " || users id : " . $rows2['id'];
if( $chk - strtotime($rows2['date_create']) > 0) {
echo " || date_create : " . $rows2['date_create'] ." True";
}
else {
echo " || date_create : " . $rows2['date_create'] . "False";
}
l();
}
php.net上的strtotime()
文档。
最好使用以下查询:
SELECT id, date_create,unix_timestamp(date_create) as time_stamp FROM users WHERE id = $fid"
并比较作为int 的time_stamp变量