在我的数据库表中,字段保存为2013-02-15 00:00:00.000。我希望他们应该是2013-02-15 23:59:59.999。那么如何转换2013-02-15 00:00:00.000到02-15 23:59:59.999。换句话说,只改变最短时间到最长时间。
答案 0 :(得分:3)
DECLARE @Time TIME = '23:59:59.999'
SELECT dateColumn + @Time
FROM tableName
修改
将@time转换为(+)
之前的日期时间DECLARE @Time TIME = '23:59:59.999'
SELECT dateColumn + CAST(@Time as DATETIME)
FROM tableName
答案 1 :(得分:2)
轻松完成:
SELECT dateCol + '23:59:59'
答案 2 :(得分:1)
日期时间数据类型不精确到千分之一秒,而是仅精确到333秒(BOL中的详细信息,它与实际存储数据的方式有关)。
运行此示例:
DECLARE @Test datetime = 'Feb 15, 2013'
PRINT convert(varchar(50), @Test, 109)
SET @Test = dateadd(ms, -1, @Test)
PRINT convert(varchar(50), @Test, 109)
SET @Test = dateadd(ms, -1, @Test)
PRINT convert(varchar(50), @Test, 109)
SET @Test = dateadd(ms, -1, @Test)
PRINT convert(varchar(50), @Test, 109)
PRINT ''
SET @Test = dateadd(ms, -3, @Test)
PRINT convert(varchar(50), @Test, 109)
SET @Test = dateadd(ms, -3, @Test)
PRINT convert(varchar(50), @Test, 109)
SET @Test = dateadd(ms, -3, @Test)
PRINT convert(varchar(50), @Test, 109)
这会产生:
Feb 15 2013 12:00:00:000AM
Feb 15 2013 12:00:00:000AM
Feb 15 2013 12:00:00:000AM
Feb 15 2013 12:00:00:000AM
Feb 14 2013 11:59:59:997PM
Feb 14 2013 11:59:59:993PM
Feb 14 2013 11:59:59:990PM
因此,最简单的方法是将日期时间更新为2013年2月15日之前的最高/最后可能时刻,您需要减去3毫秒,如上所示。在表格中,它将类似于:
UPDATE MyTable
set MyDateTime = dateadd(ms, -3, MyDateTime)