仅从日期时间字段(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 中具有各种日期和字符串格式的列中提取日期?