仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量

Posted

技术标签:

【中文标题】仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量【英文标题】:Extracting only date from datetime field (mysql) and assigning it to php variable 【发布时间】:2012-12-10 19:14:27 【问题描述】:

我无法从 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 indtead @rOcKiNgRhO,他使用的是 PHP 4。PDO 直到 PHP >= 5.1 才出现 为了更安全,我要求以后不要使用。 非常简单。只需参考这个:- php.net/manual/en/function.date.php 【参考方案1】:

如果您只想显示日期部分,您可以使用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() 函数。 我有理由让他在 PHP 中显示/格式化日期。【参考方案2】:

直接在 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'

【讨论】:

【参考方案3】:

当涉及到日期操作时,我发现一个链接非常有用: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

在那里很容易找到解决方案:

SELECT *, DATE(Invdate) as Inv_date ...

【讨论】:

以上是关于仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量的主要内容,如果未能解决你的问题,请参考以下文章

仅从时刻对象中提取日期

如何仅从 sql server 2008 中的日期中提取年份?

熊猫:仅从日期时间列中提取日历年

我们如何仅从 Oracle 中具有各种日期和字符串格式的列中提取日期?

Oracle - 都获取 XML 日期字符串并将其转换为日期

如何从单元格中提取日期并将其与今天的日期进行比较