0

我有一个包含 DateField(DataType : DateTime) 和 TimeField(DataType : Float) 的表我的输出应该是 DateTime 。我的表在 SQL Server 2008 中

这是一个例子:

表 A

ID  StartDate                            StartTime
1   2012-06-08 00:00:00.000              1223
2   2012-08-07 00:00:00.000              910
3   2012-05-02 00:00:00.000              1614
4   0094-07-13 00:00:00.000              1245
5   1994-04-18 00.00:00.000              2573

我需要以这样的方式获取我的输出,它应该验证正确的时间和正确的日期,并附加这两个并插入表 B

表 B:

ID    StartDateTime
1     2012-06-06 12:23:00.000
2     2012-08-07 09:10:00.000
3     2012-05-02 16:14:00.000

请注意,我故意将第 4 行和第 5 行排除在结果集中;这些行应该被忽略,因为它们不包含有效的日期时间或时间数据。

4

1 回答 1

4

您是否考虑过更正设计,并将日期/时间存储在一起,或者至少使用正确的数据类型存储日期和时间?同时:

SELECT StartDate + STUFF(RIGHT('0' + RTRIM(StartTime), 4), 3, 0, ':') 
  FROM dbo.table
  WHERE ISDATE(StartDate) = 1 AND CONVERT(INT, StartTime) < 2400

  -- wow what a bunch of absolute garbage data you have
  -- what Government agency are you paying to provide this data?

  AND CONVERT(INT, StartTime) % 100 BETWEEN 0 AND 59;
于 2012-07-25T12:02:15.303 回答