题
我想插入一段时间只有价值,但得到的以下错误
- 前{"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时工作的日期时间,它的缓慢。坚持浮动数字操作。