では動作しないのはなぜDB2
でLIKE
構造を使用して問題を持っています。たとえば :タイムスタンプでLIKEを使用すると、DB2
select * from TEST where TIME LIKE '2012-03-04-%'
。 - TIME
はTIMESTAMP
データ型です。
LIKE
とTIMESTAMPS
を使用する理由はありませんか?
追加情報:選択した明細書でユーザーが指定した日からデータを抽出したい。
では動作しないのはなぜDB2
でLIKE
構造を使用して問題を持っています。たとえば :タイムスタンプでLIKEを使用すると、DB2
select * from TEST where TIME LIKE '2012-03-04-%'
。 - TIME
はTIMESTAMP
データ型です。
LIKE
とTIMESTAMPS
を使用する理由はありませんか?
追加情報:選択した明細書でユーザーが指定した日からデータを抽出したい。
だけmortbの答え@上の拡大、私はcasts
とLIKE
を使用して意味することBETWEEN
や比較を使用してのBETWEEN
または
WHERE time >= '2012-03-04' AND time < '2012-03-05'
利点を使用したいのいずれかを使用することをtime
にインデックスがある場合それは鋳造のために使用することができないであろう。
+1:連続値で 'BETWEEN'を使用しないためです。関数内の検索フィールドを隠さないため。また、 'TIMESTAMP'を扱うために文字列操作を使用しないためです。なぜ人々はすべてが文字列だと思うのですか? – MatBailie
私は最初に日付の周りに ''(引用符)を追加したときに混乱が始まったと思います。アクセスデータベース用にSQLを記述するときは、通常の文字列リテラルではなく、#(#2012-04-04#)で日付を囲むことができます。それはもっと明白なようです。 – mortb
@mortb - 日付の前後に引用符はありません。あなたのクエリでは、2つの文字列定数があります。 'TIMESTAMP> = STRING'は不可能なので、他のデータ型を暗黙的に*他のものにキャストする必要があります。データ型の確からしさの順序に基づいて、文字列はTIMESTAMPに暗黙的にキャストされます。まるでCAST()関数を自分で使ったかのように。 – MatBailie
このように使用できますto_date( '2016-06-17 00:00:00'、 'yyyy-mm-dd HH24:MI:SS')とto_date( '2016-06-18 00:00:00 '、' yyyy-mm-dd HH24:MI:SS ')
タイムスタンプは文字列ではないので、実際に文字列のように扱いたい場合は、文字列にキャストし、必要な形式を指定します。しかし、このタイプの問合せでは、タイムスタンプを他のものにキャストしてネイティブに使用しないでください。このデータ型をネイティブに処理するための関数と構造体がたくさんあります。それらをストリングのように扱いません。 – MatBailie