如何比较'年份与分数'和'年度'DATETIME字段

时间:2010-11-12 01:24:50

标签: sql datetime

我正在尝试编写一个select,其中部分条件是比较两个DATETIME字段(来自两个不同的表)。一个是分数年份,另一个是年复一年。有没有办法编写表达式,以便年份到分数值逐年缩短?我不打算缩短输出的字段,而是我需要在逻辑本身中将字段比作等于。

以下是我想要了解的内容:

SELECT BLAH
  FROM TABLE1 T1
  JOIN TABLE2 T2 ON T1.A = T2.A AND T1.B = T2.B
                                AND T1.FIELD1 = 100
                                AND T1.TIMESTAMP = T2.WORDERDATE

T1.TIMESTAMP是分数年份,T2.WORDERDATE是年复一年

如果可能的话,用非常简单的英语提供任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

你可以施展然后进行比较吗?

SELECT BLAH
FROM TABLE1 T1
JOIN TABLE2 T2 ON T1.A = T2.A AND T1.B = T2.B
                            AND T1.FIELD1 = 100
                            AND CAST(FLOOR(CAST(T1.TIMESTAMP AS FLOAT)) AS DATETIME) = CAST(FLOOR(CAST(T2.WORDERDA AS FLOAT)) AS DATETIME)

答案 1 :(得分:0)

Beemer:我有一个数据字典,特别告诉我这些字段是年复一年或每年分数,我可以在视觉上看到数据库中的字段长度。年复一年的领域只有十个位置,其中分数的年份要长得多。

OMG Ponies:数据库实际上是一个HP Tandem数据库,但数据已经复制到Oracle服务器上,我的目标是从中获取信息。

jon3laze:我不熟悉CAST,FLOOR或FLOAT,但感谢您的回复。我明天会试着你的答案,看看能否成功。再次感谢。

答案 2 :(得分:0)

我刚试过类似的东西。至少在Tandem(或HP NonStop)上,以下内容足够:

SELECT BLAH
  FROM TABLE1 T1
  JOIN TABLE2 T2 ON T1.A = T2.A AND T1.B = T2.B
                                AND T1.FIELD1 = 100
                                AND T1.TIMESTAMP YEAR TO DAY = T2.WORDERDATE YEAR TO DAY

这会将两个时间戳都转换为“YY TO DAY”,即格式为“YYYY-MM-DD”。