如何从我的数据中排除年月字符串?

时间:2016-03-23 08:52:09

标签: sql datetime teradata

SELECT 
EXTRACT(YEAR from saledate)||EXTRACT(MONTH from saledate) AS YEAR_MONTH,
FROM trnsact
WHERE YEAR_MONTH <> '2005 8'
  1. 以上是我的问题示例代码,它在 Teradata 中运行。

  2. 所以,我从在线课程中得到了一些提示&#34; || &#34;符号可以加入日期的年份和月份。

  3. 事情是,我不知道排除这个年 - 月对字符串的某些值。与在代码中一样,我想从我的数据中排除2005-08。

  4. 我尝试了不同版本的订购和样式,我将在下面列出。没有任何效果。
  5. 我也试过使用NOT IN功能,这也没有用。
  6. 我不知道如何搜索我的问题,因为我所知道的是这个符号可以做什么,而且我没有关于它的名字的信息。
  7. 也是这个结果||功能输出的风格类似于&#34; 2005 08&#34;。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT  EXTRACT(YEAR from saledate) || EXTRACT(MONTH from saledate) AS YEAR_MONTH
FROM trnsact
WHERE EXTRACT(YEAR from saledate) <> 2005 AND
      EXTRACT(MONTH from saledate) <> 08

我不知道EXTRACT(来自saledate的MONTH)是否将数据作为MMM返回,但是如果它不起作用则将比较切换为8而不是{ {1}}

答案 1 :(得分:0)

EXTRACT的重新排列数据类型是INTEGER,如果您在那里连续自动对具有前导空格和右对齐数字的VARCHAR(11)进行类型转换:

'       2016          3'

但是没有必要连接,要么使用两个EXTRACT,要么更好:

WHERE saledate NOT BETWEEN DATE '2016-03-01' AND DATE '2016-03-31'

现在根本没有计算,搜索条件也可能使用索引或分区。