Tsql 创建、存储和使用时间值
我不是SQL新手,但最近创建了一个表,其中包含一个定义为Tsql 创建、存储和使用时间值,tsql,sql-server-2008-r2,sql-update,Tsql,Sql Server 2008 R2,Sql Update,我不是SQL新手,但最近创建了一个表,其中包含一个定义为TIME的列。由于某些原因,我无法使此字段的值正好位于12 AM以下(23:59:99.999)。下面是我的简化TSQL DECLARE @Time TIME = '23:59:99.99999' UPDATE tblProjectSLA SET colSLATime = @Time WHERE SLAID IN ( 22, 24) 我得到以下错误: 味精241,第16级,状态1,第1行 从字符串转换日期和/或时间时,转换失败 我能够将时
TIME
的列。由于某些原因,我无法使此字段的值正好位于12 AM以下(23:59:99.999
)。下面是我的简化TSQL
DECLARE @Time TIME = '23:59:99.99999'
UPDATE tblProjectSLA
SET colSLATime = @Time
WHERE SLAID IN ( 22, 24)
我得到以下错误:
味精241,第16级,状态1,第1行从字符串转换日期和/或时间时,转换失败 我能够将时间值设置为最低可能的时间“分辨率”,并且它成功地更新了字段
DECLARE @Time DATETIME = '23:59'
以下是查询SQL mgr时显示的结果:
colSLATime
23:59:00.0000000
我还尝试将字符串值转换为时间。。。同样的错误:
DECLARE @Time TIME = CAST('23:59:99.99999' AS TIME)
我觉得奇怪的是,表格的定义精度为16,刻度为7,难道我不能使用与表格中保存的值相近的值吗
下面是colSLATime列的定义方式。。。(使用sp_help命令并转换为更易于阅读)
如果有人能告诉我一个关于使用时间数据类型的细节的简单讨论。或者我应该废弃并在运行时使用一个VARCHAR字段并强制转换(估计不是这样)
那么,尝试使用:
23:59:59.99999
------^ this digit is pretty important!
而不是
23:59:99.99999
------^
一分钟99秒是不存在的 天哪。。。透过树林看不见森林!声明@Time Time='23:59:59.999999'已生效!谢谢你帮我澄清!
23:59:59.99999
------^ this digit is pretty important!
23:59:99.99999
------^