0

也许我的问题太复杂了,或者我只是措辞不当,但我很难找到答案。我会尽可能简洁明了。

我在 SQL Server 2005 中有两个单独的表,每个表都通过单独的应用程序进行更新。由于这些应用程序的限制,这些表的构建方式完全不同。在表 A 中,订单的日期和时间存储为 108 格式的 DATETIME(即 14/11/2013 08:15:00)。在表 B 中,这些值由插入它们的触发器自动拆分。它们分为 VARCHAR 类型的单独字段(即 Day = '14/11/2013' 和 HourFrom = '0815')。

不幸的是,这些参数超出了我的控制范围。如果我尝试以不同于 SQL 端的方式格式化任一表,则两个应用程序都将失败。(不要让我开始......)

我的基本问题是:当完成订单的驱动程序更新表 B 时,需要将新值从表 B 更新到表 A。例如,如果订单是从 08:15 到 09 写入表 A :00 但司机实际上是在 08:30 捡到它,并且只在 09:15 完成了运行,表 A 中的时间必须根据司机插入到表 B 中的那些新值来更新。

我的问题是我很难从表 B 中获取 VARCHAR 值,在时间中插入冒号以便转换函数接受它们,将它们与日期字段连接,然后将整个值更新到表 A . 我收到很多错误,告诉我我的转换失败的所有不同方式,所以我不打算全部列出。如果有一种快速、干净的方法来进行这种转换,我还没有找到。任何帮助将不胜感激。

我是 SQL 新手,我认为这就是我残酷的霸主将这个项目扔给我的原因;我学得很快,但这样的时刻非常令人沮丧。

为什么这些方面的东西似乎对我不起作用?

@DAY = VARCHAR date value without time ("14/11/2013")
@HOURFROM = VARCHAR hour value ("0800")

[这些值已经在表 B 的数据库中建立]

convert(DATETIME,(@DAY+' '+LEFT(@HOURFROM,2)+':'+RIGHT(@HOURFROM,2)),108)

[我想将此值设置为 DATETIME,108,然后将该值更新到表 A]

4

1 回答 1

0

或者干脆

select convert(datetime,@day+ ' '+stuff(@hourfrom,3,0,':'),103) 
于 2013-11-14T09:26:22.710 回答