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
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