TimeStamp是我的表R中的数值数据类型字段,例如:2445302102010(02/10/2010) 我试图通过日期范围02/09/15 - 02/15/15查询,问题是我从2010年获得结果?
Select distinct
R.CID,
RIGHT(R.TimeStamp,8)
from TableRev R
WHERE
R.Codes in ('NY','NV')
AND RIGHT(R.TimeStamp,8) between 02092015 and 02152015
ORDER BY R.TimeStamp
答案 0 :(得分:1)
您可以通过某种方式构建日期,以便查找特定的日期范围。为此,CONCAT
(或||:|| can be used as a synonym for CONCAT [见注19])会有所帮助。所以你可以尝试这样的事情:
Select distinct
R.CID,
RIGHT(R.TimeStamp,8)
from TableRev R
WHERE
R.Codes in ('NY','NV')
AND (RIGHT(R.TimeStamp,4) || LEFT(RIGHT(R.TimeStamp,8),4))
between '20150209' and '20150215'
ORDER BY R.TimeStamp
答案 1 :(得分:-1)
看起来你遇到了我一直遇到的问题。很久以前一些程序员认为这是个好主意.... 您将不得不将数据拉入其中,并将其转换为SQL将理解的函数。
假设您使用SQL引擎查询转换将起作用: 试试这个:
AND CONVERT(datetime,RIGHT(R.TimeStamp,8),101) between 02/09/2015 and 02/15/2015
如果使用某些DB2工具,则必须对数据进行CAST,如果原始数据格式正确的话。检查FILELAY以查看该字段是否在此图表中。 IBM几乎必须是要转换的VARCHAR或TIMESTAMP。如果是,您可以:
AND CAST(TimeStamp as Date)