我有一个包含三列的表。
“UserId”type-nvarchar
“PostAuthorId”type-nvarchar
“发布”类型文字
此表格将包含每个用户页面中的“墙”帖子,如facebook。我将在每个用户的页面上使用gridview来显示帖子。问题是我希望用最新(最新)的帖子作为第一个帖子并且最早的帖子是最后一个来显示它们。
我以前从未使用过自动增量,我不确定这是不是答案。如果是,我不知道如何使用它。我想添加一个发布日期的列,然后按日期排序。
如果我最终使用日期列,我还可以在帖子上显示日期。有没有办法将日期转换为可读格式?
实施此类订购的最佳方式是什么?
答案 0 :(得分:2)
如果使用AutoIcrement,则第一条记录将从1开始,每条记录将从那里开始增加。 (默认设置)
如果您想先按最新排序,请先执行ORDER BY ID DESC 我建议创建一个名为wallPostID的列,然后将其设置为AutoIncrement以及您的主键
日期格式: 如果要在gridView中显示此数据
{0:d}
将显示为1/1/2010 此网站在字符串格式中有更多信息
答案 1 :(得分:1)
日期时间列肯定适合这样的事情。假设您正在使用MS-SQL,您还可以使用内置函数GETDATE()将默认值附加到列。这样,您只需输入重要的数据,数据库将负责添加datetime列。
答案 2 :(得分:0)
要将日期时间转换为可读格式,请尝试:
DateTime postDate;
string value = postDate.ToShortDateString();
答案 3 :(得分:0)
我建议使用DateTime字段而不是自动增量,因为它不仅可以作为有效的排序字段,还可以保留您可能想要显示的信息。如果你想要最新的第一个,你将使用日期和“DESC”修饰符进行排序:
Select ... Order By [Date] DESC;
检索数据时,可以将其作为DateTime检索并使用C#进行修改。如果您只想显示日期,可以使用mdresser建议的“ToShortDateString()”,如果您希望显示时间,也可以使用ToString(“...”)。您还可以在检索之前使用SQL将其转换为字符串:
convert(Varchar(10), @mydatetime, 101)
如果您查看MSDN,您会看到各种转换代码(上面使用的代码是101),可用于以各种方式翻译日期。
更新:您可能希望为您的应用程序使用自动增量字段,原因不是您表达的需要对墙条目进行排序。它们易于使用 - 如果使用SQL Server(其他DB类似),只需将该字段标记为 Identity 即可。至于在程序中使用它们,只需将该字段视为您永远不必设置的Int字段。
现在,为什么要使用自动递增字段?也许最直接的原因是它们可以让您轻松识别每条记录。例如,如果您允许人们更改或删除其墙条目,则自动递增字段是理想的,因为它为您提供了一种轻松查找每条记录的方法(每条记录将分配其自己的唯一值)。您可以像StackOverflow那样在记录旁放置一个“x”,并使用UID(自动增量)值进行回调。请注意,如果您要执行此操作,则应在UID字段上设置主键。
现在,如果您发现它们因此而有用那么您也可以按UID排序。我仍然会存储日期,以便您可以提供日期和时间反馈,了解何时在墙上创建条目,但这不再是您的索引或排序字段。
答案 4 :(得分:0)
您应始终使用自动递增的ID字段。也可以用作你的PK