我想插入一段时间只有价值,但得到的以下错误

  • 前{"SqlDateTime溢出。必须之间1/1/1753 12:00:00和12/31/9999 11:59:59."} 系统。异常

从前结束,时间是选择使用"TimeEdit"的控制,与上下箭。表SQL服务器领域设定为smalldatetime。我只需要存储时间。我用以下返回的数据的应用程序

select id,转换(CHAR(5),timeFrom,8)如timeFrom、转换(CHAR(5),时,8)如时 从dbo。店 where id=@id 和dayName=@工作日

怎么做我通过时间只表?

编辑~解决方案 为每Euardo和克里斯,我的解决方案是通过一个日期时间串而不是一个时间仅串。我我的格式的结果为每 时间格式 使用"g"。

感谢

有帮助吗?

解决方案

选择一个日期,是在范围(即,1/1/1970),并使用它的一切你插入。

其他提示

你可以设定的日期1/1/1753这是日期分钟值datetime在MSSQL然后添加一小时,你想商店。当然你必须要考虑,这每次需要获得价值但你可以包装,一些助手。或者您可以使用MSSQL2008和使用新的时间数据类型。

如果你只是跟踪的时间,认为其存储在一个int作为偏离午夜在什么granualarity你需要(秒钟,小时,...).然后可以将其转换为时间代码中采用适当的时间跨度。从??()方法。回去的其他方式,可以使用的时间跨度。总的??并截断,如果需要的话。如果你需要做手动查询的,你可以写一SQL功能,将转换时间/分钟/秒的同等抵消。

我喜欢这种过度使用日期时间并选择任意一天,因为它使目的领域更加清晰,减少混乱。

没有这样的事情的时间在SQL,只有DateTime。

为你的目的,我会用这样的东西只有返回的时间部分。

SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))

在GETDATE()为datetime你想要过滤器。

当设定时间在数据库中,你将需要添加'01/01/1901'或'01/01/1753'的时间。

不可使用铸和转换到varchar时工作的日期时间,它的缓慢。坚持浮动数字操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top