2010-03-22 61 views
2

我在SQL Server 2008下创建了一个小型数据库。现在我想将它移动到SQL Server 2005,它不起作用,因为它没有Time数据类型。我必须在SQL Server 2005中存储什么选项。我已经编写了小型TimeSheet应用程序,它需要编写大部分格式为05:30:00(hh:mm:ss)的小时和分钟,但ss是可选的。Sql Server 2005中的Time DataType

+0

谢谢。我将不得不修复C#应用程序才能使用DateTime,或者安装不是我最喜欢的SQL Express。 – MadBoy 2010-03-22 11:15:34

+0

我很好奇你为什么只想要时间。如果您需要时间之间的差异,则可以存储整个日期和时间并使用Timespan函数。也许这不是你正在寻找的,但我不知道你想做什么。 – DJTripleThreat 2010-03-22 11:42:14

+0

我正在储存3小时30分钟。我不需要日期,因为用户不应该把StartTime和EndTime放进去,而只是他花了一天的时间(我把日期存储在不同的字段中)。然后我可以在Time上使用SUM()(不是真正的SUM,而是自己在SQL中创建的)。 – MadBoy 2010-03-22 11:49:10

回答

4

SQL Server 2005确实支持DATETIME数据类型,它也包含时间。仅存储时,你可以使用CONVERT声明:

SELECT CONVERT(DATETIME, '11:22:33') 

这不是最佳的,因为不使用的日期部分,但是仍然占据存储空间。但是,再次,将数据库降级到以前的版本永远不会是最佳的。

2
  • 无。盒子外面。
  • 自己动手使用基于CLR的自定义类型。
  • 住在一起。

对于一个时间表,我个人不希望有一个时间字段,但存储时间为DateTime总是 - 使查询更容易。

1

可悲的是,没有Time数据类型在SQL Server 2005中我会建议做你现有的数据转化为您的SQL Server 2005实例是使用这样的:

Select CONVERT(DateTime, YourDateTimeColumn, 114) AS [HH:MI:SS:MMM(24H)] 
    From YourTable 

这会给你的当前日期与现有数据的时间。在检索数据时,您不得不以某种方式去除时间日期。这可以通过使用C#中的格式化函数来完成(或者你可能使用的任何.NET语言......假设你正在这样做)

希望有帮助。