我目前遇到了数据库问题,我需要使用数据库插入来操作数据。我目前在Visual Studio 2012上使用C#ASP.NET建立一个网站,我使用的数据库是SQL Management 2008。
首先,我目前将System.Date存储到一个字符串中,并将其作为nvarchar数据类型存储在我的数据库中。如果我想从例如user ='x'获取最新的10行,我应该如何实际执行SELECT语句以获取我指定的数据?
我目前使用calander Ajax工具包存储Date of Birth等信息,因此日期保存的格式为月/日/年格式。数据也作为nvarchar存储在我的数据库中。如果我想计算用户年龄='x'我应该如何计算呢?
答案 0 :(得分:0)
我认为Jon's comment关于正确存储数据作为日期时间是正确的:
为什么要将它存储为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日历扩展程序,则应该是这样。)