2017-06-05 67 views
2

下面我有一个工作代码:如何使用php和mysql获取某个记录的最后插入日期?

$p_code = "R-BIGANTE-010"; 
$date = date("m/d/Y"); 
$statement=$pdo->prepare("SELECT * FROM items WHERE p_code=? AND date=?"); 
$statement->execute(array($p_code, $date)); 

什么它是获得某个项目与P_CODE和日期等于今天。我想知道的是,如何使用最新的最新更新查询特定项目?

例如,在我的items表我有

enter image description here

正如你所看到的,我有两个p_code与价值"R-BIGANTE-010"。假设当前日期是当今05/06/2017,我想突出显示的一个,因为date场比其它值很多最新的。

我如何查询呢?顺便说的日期值是varchar因为代码是旧的,以后我会清理一切。

任何帮助将不胜感激。

+1

这是最好的使用日期[ISO 8601格式(https://en.wikipedia.org/wiki/ISO_8601),'YYYY-MM-DD',为多种原因,但其中之一是本地'DATE'列类型在不转换的情况下接受它们。其他格式通常是不明确的:01/02/2017可能是2月1日或1月2日。 – tadman

回答

1

如果日期格式为m/d/y,则必须通过将varchar日期转换为实际数据来进行不同的排序es使用STR_TO_DATE()函数。

SELECT * from tablename 
WHERE p_code = ? 
ORDER BY STR_TO_DATE(date, '%m/%d/%Y') DESC 
LIMIT 1 

你应该真的使用日期数据类型,而不是VARCHAR。

+0

我会做先生。你的代码工作的方式。非常感谢你。 – FewFlyBy

1

您可以通过获得的最后更新日期select query with order by and limit,如:

SELECT * from tablename ORDER BY date DESC LIMIT 1 

您日期存储在VARCHAR列,所以尽量STR_TO_DATE功能

SELECT * from tablename 
ORDER BY STR_TO_DATE(date, '%m/%d/%Y %h:%i:%s'); 
+0

它会工作,如果我的日期字段是在varchar?但格式为m/d/Y – FewFlyBy

+0

检查更新的答案 –

+0

非常感谢你。有用。 – FewFlyBy

1
SELECT * from tablename WHERE p_code=? ORDER BY date DESC LIMIT 1 
1
Try this: 
    $p_code = "R-BIGANTE-010"; 
    $date = date("m/d/Y"); 
    $statement=$pdo->prepare("SELECT * FROM items WHERE p_code=? AND date=?"); 
    $statement->execute(array($p_code, $date)); 
    $id = $statement->lastInsertId(); 

If you want to do it with SQL instead of the PDO API query: 

    $stmt = $pdo->query("SELECT LAST_INSERT_ID()"); 
    $lastId = $stmt->fetchColumn(); 
相关问题