我无能为力...希望大家能提供帮助。我entryexpire
在 sql 表中有一个日期列,例如:
2013-04-12
我需要将它转换为datetime
所有值entryexpire
都24:00:00
附加到新值,例如:
2103-04-12 24:00:00
我尝试过强制转换、隐蔽、添加新列和连接……都失败了。
我无能为力...希望大家能提供帮助。我entryexpire
在 sql 表中有一个日期列,例如:
2013-04-12
我需要将它转换为datetime
所有值entryexpire
都24:00:00
附加到新值,例如:
2103-04-12 24:00:00
我尝试过强制转换、隐蔽、添加新列和连接……都失败了。
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。不知道为什么。
添加新列 col2(日期时间)。问题更新:
update table t1 set col2 = cast(col1, datetime) // db specific function
删除列 Col1。将 col2 重命名为 col1
我的意思是,几乎没有其他方法可以做到这一点
如果有人有同样的问题,这就是我解决的方法。我创建了一个 char 列
temptime
,并使用更新命令将数据库中的所有记录的值 23:59:00 添加到该列中。
然后我创建了另一列作为日期时间
entryexpiredatetime
在我entryexpiredate
作为 char 和temptime
作为 char 列时,我使用了@folksymAndrews 代码,如下所示:
块引用
update [table] set entryexpiredatetime = CAST(ENTRYEXPIREDATE+timetime as datetime)
块引用
然后我删除了temptime
列,留下了我原来的 entryexpiredate 和我需要的 entryexpiredatetime 列。
感谢你的帮助。这是我觉得我可以完成任务的最佳方式,但我确信有一种较少入侵的方式。