不同的日期类型操纵

时间:2013-05-23 04:16:03

标签: asp.net sql c date

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

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

我目前使用calander Ajax工具包存储Date of Birth等信息,因此日期保存的格式为月/日/年格式。数据也作为nvarchar存储在我的数据库中。如果我想计算用户年龄='x'我应该如何计算呢?

1 个答案:

答案 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日历扩展程序,则应该是这样。)