如何在MySQL / PHP中插入和读取时间/日期?

时间:2011-08-05 15:28:23

标签: php mysql date time

我希望以这种格式(使用PHP)读取单日,月和年,而不添加3个额外的MySQL行:

day: 01
month: Jan, Feb, Mar..(first three letters)
year: 2011

这是表和PHP脚本,我现在使用它:

我用PHP添加日期:

mysql_query("INSERT INTO news (...,`time`) VALUES (...'".date(d.".".m.".".Y)."');"); 

我用以下内容阅读:

$query = "SELECT * FROM news";
$result = mysql_query ($query);

while ($row = mysql_fetch_assoc ($result)) {
echo $row['time'];
}

MySQL表:

news:
time(text):
"27.03.2011"

5 个答案:

答案 0 :(得分:1)

你可以用PHP做,检查strftime function或在SELECT中使用

   SELECT DAY(date) as day, MONTH(date) as month, YEAR(date) as year FROM table

并在php中你将它视为$ result ['day']。 $ result ['month']等SELECT查询中的“日期”当然是您存储日期的列的名称。我会推荐strftime

答案 1 :(得分:1)

您可以使用MONTH(),DAY(),YEAR()Mysql函数。,即

SELECT MONTH(`time`) AS `month`, DAY(`time`) AS `day`, YEAR(`time`) AS `year` FROM `news` [...]

答案 2 :(得分:1)

查询应该是:

mysql_query("INSERT INTO news (...,`time`) VALUES (...'".date(d.".".M.".".Y)."');");

M而不是m为您提供当月的3个字母的文字表示。

获取:

while ($row = mysql_fetch_assoc ($result)) {
    echo date( 'd', strtotime( str$row['time'] ) );
    echo date( 'M', strtotime( str$row['time'] ) );
    echo date( 'Y', strtotime( str$row['time'] ) );
}

了解更多信息:

http://php.net/manual/en/function.date.php

答案 3 :(得分:0)

SELECT *, substring(1,2) as day, substring(4,2) as month, substring(7) as year FROM table

您也可以(并且应该)使用date表格式并使用DAY()MONTH()YEAR()函数

答案 4 :(得分:0)

您应该在mysql表中使用DATETIME列。然后,MySQL负责以自己的内部格式存储日期,您可以以任何所需的格式检索它。

要插入当前日期,您可以简单地

INSERT INTO news (...,`time`) VALUES (...,NOW())

要以您想要的格式检索它,请使用

SELECT DATE_FORMAT(`time`, '%d.%b.%Y');

Documentation on MySQL DATE_FORMAT()