从datetime字段中提取日期并将其赋值给php变量(mysql)

9

我无法从MySQL表的datetime字段中仅将日期分配给php变量。我正在使用PHP 4,我知道如何在PHP 5中完成。

有人能帮忙看看下面的php代码缺少什么吗。

$dc = mysql_query("SELECT * FROM INVHDR WHERE Invdate BETWEEN '2011-04-01' AND '2012-03-31'");
while ($dc2 = mysql_fetch_assoc($dc)) {
    $invno      = $dc2['Invno']; // Here Invno is a datetime field type
    $invdat3    = $dc2['Invdate'];
    $date_array = explode("-", $invdat3);
    $invdat     = sprintf('%02d/%02d/%4d', $date_array[2], $date_array[1], $date_array[0]);
}

msql_* 已经被弃用了,希望您知道要使用 PDO 代替。 - rOcKiNg RhO
@rOcKiNgRhO,他正在使用PHP 4。直到PHP >= 5.1才出现了PDO。 - maček
为了更安全,我建议不要在将来使用它。 - rOcKiNg RhO
非常简单。只需参考此链接:http://php.net/manual/zh/function.date.php - Bhavik Shah
3个回答

34

如果您只想显示日期部分,您可以使用DateTime类:

echo DateTime::createFromFormat("Y-m-d H:i:s", "2012-12-24 12:13:14")->format("d/m/Y");
// 24/12/2012

//因为双重回声错别字已经被编辑过了。


这个可以运行,但这不是答案。他应该在查询的SELECT部分使用DATE()函数。 - maček
1
我有理由让他在PHP中显示/格式化日期。 - Salman A

5

3

可以直接在 MySQL 中完成:

select DATE_FORMAT('2012-12-24 12:13:14', '%Y/%m/%d')

所以您的查询将如下所示:
SELECT DATE_FORMAT(Invdate, '%Y/%m/%d') FROM INVHDR WHERE Invdate BETWEEN '$startdat' AND '$enddat'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接