【问题标题】:Combine Separate Date and Time Columns SQL合并单独的日期和时间列 SQL
【发布时间】:2014-01-08 13:01:19
【问题描述】:

我正在使用一个数据库,设计前端软件的白痴认为有必要创建一个单独的日期和时间字段,但是将日期列保留为 DATETIME 列,将时间保留为 VARCHAR 列。

p>

基本上我的日期和时间如下所示:

日期 |时间

2007-10-06 00:00:00.000 |第1135章

不仅仅是将 2 under 1 列组合为适当的日期时间。

我正在尝试将 2 组合在一起,这样我就可以完全实现这一点,一个适当的 DATETIME 字段,将两组信息组合成即

2007-10-06 11:35:00.000

我正在为此苦苦挣扎。

我以为我可以逃脱

DECLARE @date DATETIME
DECLARE @time VARCHAR

SET @date = '2007-10-06 00:00:00.000'
SET @time = '1125'

SELECT TOP 1
    @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 2 , 2)
              + ':00' )

很遗憾没有,现在我想我想太多了,只是碰壁了。

任何人都可以在这件事上提供帮助并向我指出我哪里出错了:/

【问题讨论】:

  • 用这个替换最终查询:SELECT @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2) + ':00' ).
  • @KarthikDV - 消息 241,级别 16,状态 1,第 7 行从字符串转换日期和/或时间时转换失败。 ://
  • @Lynchie,我已经测试了那个样本!。在此处查看完整代码:DECLARE @date DATETIME DECLARE @time VARCHAR(4) SET @date = '2007-10-06 00:00:00.000' SET @time = '1125' SELECT @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2) + ':00' ).

标签: sql sql-server-2008 tsql


【解决方案1】:

定义 varchar 变量 @time 的大小。默认值为 1。

您还需要将第二个子字符串更改为3,2

DECLARE @date DATETIME
DECLARE @time VARCHAR(4)

SET @date = '2007-10-06 00:00:00.000'
SET @time = '1125'

SELECT TOP 1
    @date + ( SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2)
              + ':00' )

【讨论】:

    【解决方案2】:

    我会这样写

    DECLARE @date DATETIME = '2007-10-06T00:00:00'
    DECLARE @time VARCHAR(4) = '1125'
    
    SELECT @date + stuff(@time, 3,0, ':')
    

    【讨论】:

      猜你喜欢
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 2013-11-29
      • 1970-01-01
      • 2021-10-22
      • 2015-03-22
      相关资源
      最近更新 更多