SQL QUERY显示添加到表中的最新数据

时间:2013-12-11 12:20:42

标签: c# mysql

我有一个SQL查询,显示最近添加到数据库中的最新数据。这是查询:

SELECT Name, Picture, briefDescription from table order by DatePosted desc limit 1

我的问题是,给我的数据不是数据库中的最新数据,它给了我一个旧条目。我的DataPosted格式是DateTime,在数据库中,它是String类型。有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

如果DatePosted在数据库中是string类型,那么它将按字母顺序排序,而不是按日期排序。将DatePosted字段更改为在数据库中键入DATETIME(或等效项),您的代码应该可以正常工作。

例如,以下是使用字符串DatePosted字段选择的一组示例数据。正如您所看到的,它并没有降序排序。

SELECT * FROM TestTable ORDER BY DatePosted DESC

Id  Name    DatePosted
3   Charlie 10/12/2013 10:03:56 PM
2   Bravo   10/11/2013 9:03:56 PM
6   Delta   10/11/2013 9:03:56 AM
1   Alpha   10/11/2013 10:03:56 PM

您很可能需要编写一个脚本来将数据从字符串转换为DATETIME,因为大多数DBMS(可能全部)都不允许您隐式地将字符串列类型转换为数字类型(如DATETIME)。您可以通过多种方式执行此转换。也许最简单的方法是添加一个DATETIME类型的新列,将数据从字符串列复制到新的DATETIME列,删除字符串列,并将新列的名称更改为DatePosted。

以下是执行此转换的示例:

UPDATE TestTable SET DatePosted2 = CAST(DatePosted AS DATETIME)

新结果:

SELECT * FROM TestTable ORDER BY DatePosted DESC

Id  Name    DatePosted
3   Charlie 2013-10-12 22:03:56.000
1   Alpha   2013-10-11 22:03:56.000
2   Bravo   2013-10-11 21:03:56.000
6   Delta   2013-10-11 09:03:56.000

答案 1 :(得分:0)

而不是更改数据库中的值,您只需在SQL语句中转换日期以获得正确的顺序:

SELECT Name, Picture, briefDescription 
FROM table 
ORDER BY CAST(DatePosted AS DATETIME) desc limit 1