2016-06-16 10 views
0

の場所に使用します。私がする必要がある私は、この
データベースに日付とvarcharを比較しようとしているところで、varcharを日付に変換してDB2

CREATE TABLE Sample (
    mydate VARCHAR(20), 
    iddummy INTEGER 
) 

のようなテーブルを持って想像することは次のとおりです。

Select mydate, iddummy from Sample Where mydate > '01-30-2016'; 

しかし、MyDateに該当はVARCHAR(20)であるとして、それは動作しません。だから私はこの方法を試した

SELECT date(to_date(mydate, '01-25-2016')) as newdate, iddummy 
FROM Sample 
WHERE newdate < '01-30-2016' 

どのようにそれを行うにはどのようなアイデア?私はエラーコード-206を取得しています

+0

なぜデータを「VARCHAR」として保存する必要があるのか​​? – Stavr00

+0

あなたの「日付」はどのような形式ですか? –

答えて

1

"-206" があるかもしれSELECT句で定義されたエイリアス( "AS newdate")がWHERE句でまだ表示されていないためです。 SELECT文を解析するときには、FROMが最初、次にWHERE、次にGROUP BY & HAVING、SELECT、最後にORDER BYの順に行われます。 CTEを使用します:
あなたは、WHERE句でNEWDATEの定義を繰り返さなければならないであろう、またはより良い

WITH dt AS (
SELECT date(to_date(mydate, 'MM-DD-YYYY')) as newdate, iddummy 
FROM Sample 
) 
SELECT * FROM dt WHERE newdate < '01-30-2016' 
-1

エラーコード206は、 "列がSELECTの任意のテーブルに存在しない"と述べています。

SELECTいるMyDate(TO_DATE(MyDateに該当、'01 -25-2016 '))NEWDATEとして、NEWDATE < '01サンプル FROM iddummy -30-2016'

0

あなたはこの

​​

を試すことができます。しかし、これはあなたに「ERRORをスローしていました:無効な日時形式が検出されました。つまり、正しくない 文字列表現または値が指定されています」日付に変換できない文字列が含まれている場合は「012:00 -30-2016aa1232」など

0
SELECT DATE(CHAR(trim(mydate),10) as newdate, iddummy 
FROM Sample 
WHERE DATE(CHAR(trim(mydate),10) < '2016-01-30' 
関連する問題