如何在今年已经过生日的生日上更改负值

皮特

请客气,请帮助我,我对显示天数是否定负有疑问,该天数已经存在,其余时间将在明年。示例:今天是2016年3月29日和某个人的生日od是每年27。3月,用我完成的PHP编写为“ dayToBirthday”,值为“ -2”,但右侧为“ 363”。我无法写条件“如果dayToBirthday <0,否则dayToBirtday +365天”。请您能帮帮我,非常感谢。

<?php
.
.
. //connection
.
.
$action = '';
$sql = "SELECT members.*, datediff(CURDATE(),DATE_FORMAT(birthday, concat(YEAR(CURDATE()), '-%m-%d')))*(-1) AS dayToBirthday, TIMESTAMPDIFF(YEAR,birthday,CURRENT_DATE) as age FROM members";
$where = '';
if(isset($_GET["id"])) {
    $id = $_GET["id"]; //geting id value which we are passing from table headers
    $action = $_GET["action"]; // geting action value which we are passing from table headers
    //we are checking condition if $action value is ASC then $action will set to DESC otherwise it will remain ASC

    if($action == 'ASC') {
        $action='DESC';
    } else {
        $action='ASC';
    }
    if($_GET['id']=='id') {
        $id = "id";
    } else if ($_GET['id']=='name') {
        $id = "name";
    } else if($_GET['id']=='birthday') {
        $id="vorname";
    }

    $where = " ORDER BY $id $action ";
    $sql = "SELECT members.*, datediff(CURDATE(),DATE_FORMAT(birthday,     concat(YEAR(CURDATE()), '-%m-%d')))*(-1) AS dayToBirthday,     TIMESTAMPDIFF(YEAR,birthday,CURDATE()) as age FROM members" . $where;
    }
?>
融合3k

您可以将此查询与IF当前月份/日期与生日月份/日期进行比较条件一起使用:

    SELECT members.*,
           IF
           (
             SUBSTR( CURRENT_DATE, 6, 5 ) > SUBSTR( birthday, 6, 5 ),
             TIMESTAMPDIFF( DAY, CURRENT_DATE, STR_TO_DATE( REPLACE( birthday, YEAR(birthday), YEAR(NOW())+1 ), '%Y-%m-%d' ) ),
             TIMESTAMPDIFF( DAY, CURRENT_DATE, STR_TO_DATE( REPLACE( birthday, YEAR(birthday), YEAR(NOW()) ), '%Y-%m-%d' ) )
           ) as dayToBirthday,
           TIMESTAMPDIFF(YEAR,birthday,CURRENT_DATE) as age
      FROM members

请注意,我使用奢侈的子字符串比较,而不是DAYOFYEAR为了避免to年问题而更加自在

sqlFiddle demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章