SQL 日期转换查询

SQL Date Conversion Query

TimeStamp 是我的 table R 中的数字数据类型字段,例如:2445302102010 (02/10/2010) 我正在尝试按 2015 年 2 月 9 日 - 15 年 2 月 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

看起来你 运行 遇到了我一直 运行 遇到的问题。很久以前,一些程序员认为这是个好主意…… 您将不得不提取该数据,并将其转换为 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)

您可以以允许您查找特定日期范围的方式构建日期。为此,CONCAT (or || : || 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