我正在建立图书馆数据库。我有一列名为“ ArriveDate”,日期是字符串,格式为MM / DD / YYYY(月和日可能是个位数)。
我想找到新来的东西,所以我需要找到ArriveDate最大的所有书。我对SQL没有任何了解,所以可以提供任何帮助!
示例表:
标题,作者,ArriveDate
Harry Potter 1, J.K. Rowling, 7/1/2020
Harry Potter 2, J.K. Rowling, 7/1/2020
Harry Potter 3, J.K. Rowling, 7/1/2020
Book Title 1, Author Name 1, 6/1/2020
Book Title 2, Author Name 2, 6/1/2020
Magazine 1, Author Name 3, 6/1/2020
预期结果:
标题,作者,ArriveDate
Harry Potter 1, J.K. Rowling, 7/1/2020
Harry Potter 2, J.K. Rowling, 7/1/2020
Harry Potter 3, J.K. Rowling, 7/1/2020
在这里,2020年7月1日是最大的日期
为了澄清,我被卡住了,因为日期存储为字符串。如果有一种方法可以将它们转换为SQL日期,那我将知道如何去做。
答案 0 :(得分:2)
就像其他人提到的那样,您应该修复表以正确存储日期。如果您对当前的表设置感到困惑,可以尝试Cast('7/1/2020' as datetime)
并按照这种方式进行排序,然后可以使用Common Table Expression通过分区语句来获取最上面的一个。
答案 1 :(得分:0)
我无法添加注释,但与Tarik相同,带有来自mysql的示例...
选择* 从表1 其中dateold =(从表1中选择max(dateold))
答案 2 :(得分:-1)
您可以使用子查询。像
select * from mytable where CONVERT(varchar, arrdate, 1) = (select max(CONVERT(varchar, arrdate, 1)) from mytable)
这是一个类似问题的链接:How to use MAX() on a subquery result?