首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Date数据类型转换为datetime数据类型并添加静态时间

将Date数据类型转换为datetime数据类型并添加静态时间
EN

Stack Overflow用户
提问于 2013-10-18 12:28:57
回答 3查看 680关注 0票数 0

我已经无计可施了。希望你们都能帮上忙。我在sql表中有一个日期列entryexpire,例如:

代码语言:javascript
运行
复制
2013-04-12

我需要将它转换为包含entryexpire中所有值的datetime,以便将24:00:00附加到新值,例如:

代码语言:javascript
运行
复制
2103-04-12 24:00:00

我尝试过强制转换、隐藏、添加新列和连接...都让我失望了。

EN

回答 3

Stack Overflow用户

发布于 2013-10-18 12:55:24

添加新列col2 (Datetime)。问题更新:

代码语言:javascript
运行
复制
update table t1 set col2 = cast(col1, datetime) // db specific function

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-10-18 14:35:21

24:00:00真的不是一个约会的选择-你会进入第二天。下面是一条select语句,您可以使用它来根据需要定制日期,但最接近一天结束时的日期是23:59:59.997

代码语言:javascript
运行
复制
   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列(看起来您已经尝试过了),并像这样查询它们以获得一个日期时间

代码语言:javascript
运行
复制
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。不知道为什么。

票数 0
EN

Stack Overflow用户

发布于 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列。

谢谢你的帮助。这是我觉得我可以完成任务的最好方法,但我相信有一种侵入性更小的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19441608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档