0

我无能为力...希望大家能提供帮助。我entryexpire在 sql 表中有一个日期列,例如:

2013-04-12

我需要将它转换为datetime所有值entryexpire24:00:00附加到新值,例如:

2103-04-12 24:00:00

我尝试过强制转换、隐蔽、添加新列和连接……都失败了。

4

3 回答 3

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。不知道为什么。

于 2013-10-18T06:35:21.133 回答
0

添加新列 col2(日期时间)。问题更新:

update table t1 set col2 = cast(col1, datetime) // db specific function

删除列 Col1。将 col2 重命名为 col1

我的意思是,几乎没有其他方法可以做到这一点

于 2013-10-18T04:55:23.980 回答
0

如果有人有同样的问题,这就是我解决的方法。我创建了一个 char 列 temptime ,并使用更新命令将数据库中的所有记录的值 23:59:00 添加到该列中。

然后我创建了另一列作为日期时间 entryexpiredatetime

在我entryexpiredate作为 char 和temptime作为 char 列时,我使用了@folksymAndrews 代码,如下所示:

块引用

update [table] set entryexpiredatetime = CAST(ENTRYEXPIREDATE+timetime as datetime)

块引用

然后我删除了temptime列,留下了我原来的 entryexpiredate 和我需要的 entryexpiredatetime 列。

感谢你的帮助。这是我觉得我可以完成任务的最佳方式,但我确信有一种较少入侵的方式。

于 2013-10-18T17:57:04.463 回答