我有一个SQL查询,显示最近添加到数据库中的最新数据。这是查询:SQL查询显示添加到表中的最新数据
SELECT Name, Picture, briefDescription from table order by DatePosted desc limit 1
我的问题是,给我的数据不是数据库中的最新数据,它给了我一个旧的条目,而不是。我的DataPosted格式是DateTime,在数据库中是String类型。任何想法为什么?提前致谢!
我有一个SQL查询,显示最近添加到数据库中的最新数据。这是查询:SQL查询显示添加到表中的最新数据
SELECT Name, Picture, briefDescription from table order by DatePosted desc limit 1
我的问题是,给我的数据不是数据库中的最新数据,它给了我一个旧的条目,而不是。我的DataPosted格式是DateTime,在数据库中是String类型。任何想法为什么?提前致谢!
如果DatePosted在数据库中是字符串类型,那么它将按字母顺序排序,而不是按日期排序。将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
如果他知道如何转换它,那么他应该。我给出的答案是正确的。 –
是我的日期时间格式是“2013年10月11日10时03分56秒”?因为当我将其更改为DateTime时,出现此错误:“无法保存具有错误的对象:第1行的'DatePosted'列错误日期时间值'10/11/2013 10:03:56 PM'。 – user3081935
您可能需要编写一个脚本来将你的表格数据从字符串格式转换为日期时间格式,只需要改变表格设计中的字段类型可能不起作用,这取决于你使用的DBMS –
,而不是在你的数据库变化值,你可以只投的日期在SQL语句正确的顺序:
SELECT Name, Picture, briefDescription
FROM table
ORDER BY CAST(DatePosted AS DATETIME) desc limit 1
如果DatePosted是字符串类型,那么它不能按时间排序,它是s按字母排序。 – uvais
以某种方式将其转换为日期或时间, – uvais
我已经改变它,但它不起作用,它给了我这个错误,“无法保存对象的错误:不正确的日期时间值'2013/10/10 10:03:56 PM'列'DatePosted'在第1行。“ – user3081935