SQL日期转换查询

时间:2015-03-09 19:53:14

标签: sql db2 date-conversion

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

2 个答案:

答案 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)