我已经无计可施了。希望你们都能帮上忙。我在sql表中有一个日期列entryexpire,例如:
2013-04-12我需要将它转换为包含entryexpire中所有值的datetime,以便将24:00:00附加到新值,例如:
2103-04-12 24:00:00我尝试过强制转换、隐藏、添加新列和连接...都让我失望了。
发布于 2013-10-18 12:55:24
添加新列col2 (Datetime)。问题更新:
update table t1 set col2 = cast(col1, datetime) // db specific function删除列Col1。将col2重命名为col1
我的意思是,几乎没有其他方法可以做到这一点
发布于 2013-10-18 14:35:21
24:00:00真的不是一个约会的选择-你会进入第二天。下面是一条select语句,您可以使用它来根据需要定制日期,但最接近一天结束时的日期是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会导致select返回2013-04-13 00:00:00.000。不知道为什么。
发布于 2013-10-19 01:57:04
如果有人有同样的问题,这就是我解决的方法。我创建了一个char列temptime,并使用update命令将数据库中所有记录的值23:59:00添加到该列中。
然后,我创建了另一个列作为datetime entryexpiredatetime
以我的entryexpiredate作为字符,temptime作为字符列,我使用了@folksymAndrews代码,如下所示:
区块引用
update [table] set entryexpiredatetime = CAST(ENTRYEXPIREDATE+timetime as datetime)
区块引用
然后我删除了temptime列,只剩下我原来的entryexpiredate和我需要的entryexpiredatetime列。
谢谢你的帮助。这是我觉得我可以完成任务的最好方法,但我相信有一种侵入性更小的方法。
https://stackoverflow.com/questions/19441608
复制相似问题