php
  • mysql
  • date
  • 2012-07-25 50 views 0 likes 
    0

    我在NOW()的数据库中插入日期,然后查询结果。这是代码。从现在开始只查询一个月的月份()

    function get_content($id = ''){ 
    
    if($id != ''): 
        $id = mysql_real_escape_string($id); 
        $sql = "SELECT * FROM cms_content WHERE id = '$id'"; 
    
        $return = '<p><a href="index.php">Back to Content</a></p>'; 
    else: 
        $sql = "SELECT * FROM cms_content ORDER BY id DESC"; 
    endif; 
    
        $res = mysql_query($sql) or die(mysql_error()); 
    
        if(mysql_num_rows($res) != 0): 
         while($row = mysql_fetch_assoc($res)) { 
          echo '<h1><a href="index.php?id=' . $row['id'] . ' "> ' . $row['title'] . '</a></h1>'; 
          echo '<p>' . stripslashes($row['body']) . '</p>'; 
          **echo '<p>' . $row['date_posted'] . '</p>';** 
          } 
        else: 
         echo '<p> You broke it!, this post dosn\'t exsist!'; 
        endif; 
    
        echo $return; 
    

    echo '<p>' . $row['date_posted'] . '</p>'; 
    

    是我回声的日期。当我从数据库回显这个数据时,我得到了2012-07-25 19:00:46,因为这就是数据库中的内容。我的问题是,我如何回应这一天,然后回应本月,然后回顾这一年。理想情况下,这些都是独立的回声,所以我可以分别进行设计。

    回答

    1

    由于格式是已知的,你可以简单地使用:

    list($year,$month,$day) = explode("-",substr($row['date_posted'],0,10)); 
    

    然后你就可以呼应不过你想要的那些变量。

    +0

    谢谢!这工作完美! – lilfinn 2012-07-26 01:48:20

    0
    $date = strtotime($row['date_posted']; 
    echo date('d', $date); 
    echo date('m', $date); 
    echo date('Y', $date); 
    

    $date = new DateTime($row['date_posted']); 
    echo $date->format('Y'); 
    

    +0

    为什么你会不出来写上日期都在同一行/函数调用。 – 2012-07-25 23:18:36

    +0

    strtotime并不总是做你期望的。将日期转换为人类可读格式,然后将其转换回tme,然后再将其转换为不同的人类可读格式,这有点愚蠢。在查询中使用UNIX_TIMESTAMP()转换日期将会减少错误 - 但仍然是相同的转换。 – symcbean 2012-07-25 23:20:03

    +0

    ,因为他说:“理想情况下,这些都将是独立的回声,所以我可以每个不同的风格。” – Kris 2012-07-25 23:23:00

    0

    你可以使用php内置date()功能:http://us.php.net/manual/en/function.date.php

    echo "<p>".date('j M, Y', $row['date_posted'])."</p>"; 
    // would output <p>25 July, 2012</p> 
    

    这可以被修改成只是你想的任何格式。

    0

    另一个选项是做直接在SQL中使用* DATE_FORMAT *功能:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

    2

    这是很多更方便和更少的代码。

    $date = new DateTime($row['date_posted']); 
    $day = date->format('d'); 
    $month = date->format('F'); 
    $year = date->format('Y'); 
    

    资源:http://www.php.net/manual/en/class.datetime.php

    相关问题