2015-10-14 52 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