我正在尝试编写一个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
是年复一年
如果可能的话,用非常简单的英语提供任何帮助将不胜感激!
答案 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”。