2015-10-14 54 views
1

我有超过500万的,我需要在两个部分 ,我用这个Teradata的选择月

/*(cast(cast(cast(A.ORD_DTS as char(19)) as timestamp(0)) as date) >= 
(add_months(current_date,-13))- extract(day from add_months(current_date,-13))+1) 
*/ 

分割记录如何从“2015年3月31日”到“选择的特定范围2014-09-01'?

--current_date,-13 

--CURRENT_DAY=10/14/2015 

--09/01/2014 12:00:00.000000 --MIN --13 CURRENT 

--10/13/2015 4:00:06.000000 --MAX --13 CURRENT 

我试图

cast(cast(cast(A.ORD_DTS as char(19)) as timestamp(0)) as date) 
BETWEEN CAST('2015-03-31' AS DATE) AND CAST('2014-09-01' AS DATE) 
+0

'ORD_DTS','DATE','TIMESTAMP','CHAR'的数据类型是什么?你的Teradata发布是什么? – dnoeth

+0

A.ORD_DTS is datetime '09/01/2014 12:00:00.000000' --- teradata version 14.00.04.17e – Potaiza

+0

然后它很简单:'WHERE A.ORD_DTS BETWEEN DATE'2015-03-31'AND DATE'2014-09-01'',当您比较'DATE'和'TIMESTAMP'时,时间戳会自动输出到日期 – dnoeth

回答

1

入住这out..didnt执行它,但它应该工作。 Select * from table A where A.ORD_DTS >= DATE '2014-09-01' and A.ORD_DTS <= DATE '2015-03-31'

+0

然而,dnoeth解决方案也可以工作..但是在指定范围时,您必须首先使用下限,然后使用上限。 选择* from testt A其中A.dte BETWEEN'2015-03-31'和'2014-09-01' - 零行 Select * from testt A where A.dte BETWEEN'2014-09-01 'AND'2015-03-31' - 选中2行。 –

+0

谢谢...我看到了错误...谢谢你:) anwaar_hell和dnoeth !! – Potaiza