0

我目前遇到了一个数据库问题,我需要使用我的数据库插入操作数据。我目前正在 Visual Studio 2012 上使用 C# ASP.NET 做一个网站,我使用的数据库是 SQL Management 2008。

首先,我目前将 System.Date 存储到一个字符串中,并将其作为 nvarchar 数据类型存储在我的数据库中。如果我想从例如 user='x' 获取最新的 10 行,我应该如何实际执行 SELECT 语句以仅获取我指定的数据?

我目前使用 calander Ajax 工具包存储诸如出生日期之类的信息,因此保存日期的格式为月/日/年格式。数据也作为 nvarchar 存储到我的数据库中。如果我想计算 user='x' 的年龄,我应该如何计算?

4

1 回答 1

0

我认为乔恩关于将数据正确存储为日期时间的评论是正确的:

你为什么将它存储为 nvarchar 开始?它在逻辑上是日期/时间,而不是字符串 - 所以将其存储为日期/时间。摆脱字符串部分,所有格式问题也都消失了。

如果可以的话,一定要这样做。

如果由于某种原因,您无法更改数据库结构,则可以在子句中使用CAST/CONVERT语句ORDER BY来获得所需的内容:

SELECT TOP 10 *, CAST(yourDateField AS datetime) AS convertedDate
FROM yourTable
WHERE
    user='Some user'
ORDER BY CAST(yourDateField AS datetime) DESC

这假定您的 nvarchar 数据可以正确转换为日期时间(如果您使用 Ajax Control Toolkit 日历扩展器,则应该是这样)。

于 2013-05-23T14:21:54.593 回答