我的智慧结束了...希望你们都能帮忙。我在sql表中有一个日期列entryexpire
,例如:
2013-04-12
我需要将其转换为datetime
,entryexpire
中的所有值都会将24:00:00
附加到新值,例如:
2103-04-12 24:00:00
我尝试过施法,隐蔽,添加新列和连接......所有人都失败了。
答案 0 :(得分:0)
添加新列col2(日期时间)。问题更新:
update table t1 set col2 = cast(col1, datetime) // db specific function
删除列Col1。 将col2重命名为col1
我的意思是,还有其他一些方法可以做到这一点
答案 1 :(得分:0)
24:00:00实际上不是约会的选择 - 你将进入第二天。这是一个可以用来根据您的需求定制日期的精选语句,但是到达当天结束时最接近的是23:59:59.997
DECLARE @MYDATE varchar(50) = '2013-04-12'
SELECT DATEADD(DAY,1,DATEADD(Ms,-2, CAST(@MYDATE AS DATETIME)))
返回2013-04-12 23:59:59.997
或者,您可以使用两个不同的varchar列(您似乎尝试过),并像这样查询它们以获取日期时间
DECLARE @MYDATE varchar(50) = '2013-04-12'
declare @mytime varchar(50) = ' 23:59:59.998'
select CAST(@mydate + @mytime as datetime)
同样,使用23:59:59.999会使选择返回2013-04-13 00:00:00.000。不知道为什么。
答案 2 :(得分:0)
如果有人遇到同样的问题,这就是我解决的问题。我创建了一个char列
temptime
并使用更新命令将数据库中的所有记录的值23:59:00添加到该列中。
entryexpiredatetime
我的entryexpiredate
作为char而temptime
作为char列,我使用了@folksymAndrews代码,如下所示:
块引用
update [table] set entryexpiredatetime = CAST(ENTRYEXPIREDATE+timetime as datetime)
块引用
然后我删除了temptime
列,并留下了原始的entryexpiredate和我需要的entryexpiredatetime列。
感谢您的帮助。这是我觉得我能完成任务的最佳方式,但我确信这种方法的入侵率较低。