我有一个SQL查询,显示最近添加到数据库中的最新数据。这是查询:
SELECT Name, Picture, briefDescription from table order by DatePosted desc limit 1
我的问题是,给我的数据不是数据库中的最新数据,它给了我一个旧条目。我的DataPosted格式是DateTime,在数据库中,它是String类型。有什么想法吗?提前谢谢!
答案 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