仅选择月份和日期

时间:2016-02-03 16:15:28

标签: php

我有这个格式02-03-2016的mysql表(DateOfBirth)的这一列 我想在会员的出生日期到今天时显示一条消息。如何仅选择列中的月份和日期02-03,以将其与$dat=date("m-d");进行比较。看看我的代码

 date_default_timezone_set("America/New_York");
 $dat=date("m-d");
 $resa=mysqli_query($dbc,"SELECT name FROM qbreplace.Staff_Member WHERE 
 DateOfBirth = '$dat'") or die ('Erreur : '.mysqli_error());
 while($row = mysqli_fetch_array($resa)){
  echo "<div style='color:red;font-weight:bold;text-decoration:blink;'>Today is ".$row['name']." birthday !</div>";
 }

3 个答案:

答案 0 :(得分:1)

这应该可行,但有很多优雅的解决方案。此外,正如其他人所建议的那样,验证数据库是否以d-m-Y或m-d-Y格式存储日期

date_default_timezone_set("America/New_York");
    $dat=date("m-d");
    $resa=mysqli_query($dbc,"SELECT name FROM qbreplace.Staff_Member WHERE
     LEFT(DateOfBirth , 5) = '$dat'") or die ('Erreur : '.mysqli_error());

 while($row = mysqli_fetch_array($resa)){
            echo "<div style='color:red;font-weight:bold;text-decoration:blink;'>Today is ".$row['name']." birthday !</div>";

        }

脚本检查DateOfBirth字段中的前5个字符是否等于您在$ dat中创建的字符串。

更优雅的方式是使用内置日期格式,即

 DATE_FORMAT(DateOfBirth,'%m-%d') = $dat

答案 1 :(得分:1)

date_default_timezone_set("America/New_York");
 $dat=date("m-d");
 $resa=mysqli_query($dbc,"SELECT name FROM qbreplace.Staff_Member WHERE 
 DATE_FORMAT(DateOfBirth,'%m-%d') = '$dat'") or die ('Erreur : '.mysqli_error());
 while($row = mysqli_fetch_array($resa)){
echo "<div style='color:red;font-weight:bold;text-decoration:blink;'>Today is ".$row['name']." birthday !</div>";

 }

您可以使用DATE_FORMAT临时转换日期格式并检查当前日期和月份。 这里是关于DATE_FORMAT的教程 http://www.w3schools.com/sql/func_date_format.asp

答案 2 :(得分:0)

mysql中有一些函数可用于格式化您的日期,以便您可以使用这些

您可以使用STR_TO_DATE()将字符串转换为MySQL日期值或DATE_FORMAT函数将日期转换为您需要的任何格式

 STR_TO_DATE(datestring, '%d/%m/%Y')
DATE_FORMAT(date,'%d/%m/%Y')