7

私はSybaseを初めて使用し、指定された日付の後、および指定された日付の前に結果を返すクエリを作成しています。MM/DD/YYYY形式

現時点では私がやっている..

SELECT * 
    From aTable
      WHERE afterDate >= 08/07/2013
        AND beforeDate <= 08/08/2013

レコードを取得していますが、私は Sybase の初心者なので、Sybase がこれらの日付を正しく解釈していることを確認したいと思います..

彼らのオンラインドキュメントは、このようなことに関する基本的な説明にはかなり悪いです! 私が持っているものが機能するかどうかを確認できる人はいますか、それとも日付の周りに何らかのフォーマットが必要ですか?

4

5 に答える 5

14

日付を DATETIME に変換し、sybase に確実な形式を伝える必要があります。このドキュメント
によると、MM/DD/YYYY のコードは 101 なので、次のようになります。

SELECT * 
FROM aTable
WHERE afterDate >= CONVERT(DATETIME,'08/07/2013',101)
      AND beforeDate <= CONVERT(DATETIME,'08/08/2013',101)

次の選択ステートメントを実行すると、違いを確認できます。

SELECT CONVERT(DATETIME,'08/07/2013',101)  --MM/DD/YYYY (2013-08-07 00:00:00.000)
SELECT CONVERT(DATETIME,'08/07/2013',103)  --DD/MM/YYYY (2013-07-08 00:00:00.000)
于 2013-08-08T16:50:39.257 に答える
7

sybase の任意の日時フィールドについては、convert 関数を使用する代わりに、より直接的な方法があります。

SELECT * 
From aTable
  WHERE afterDate >= '2013-08-07'
    AND beforeDate <= '2013-08-08'

日付は「YYYY-MM-DD」の形式である必要があります

時間を追加したい場合は、日付と一緒に含めることができます。日付と時刻は T で区切る必要があります。

「YYYY-MM-DDTHH:MM:SS」の形式を使用して、任意の日時フィールドを直接使用できます

関数の使用は長すぎます。リスを撃つためにバズーカは必要ありません!:)

于 2015-03-10T13:11:23.713 に答える
2

最善の方法は、変換を必要としない ANSI 標準を使用することです: yyyymmdd (hh:mm:ss を含めることもできます)。

DateField1 >= "20150101" および DateFile1 <= "20150102"

于 2015-03-11T17:54:24.977 に答える
0

ユーザーがパラメーターとして使用する入力文字列を決定し、それらを変換して、必要に応じて連結する必要があります。Datetime でない限り、初期形式が重要ではないため、中間条件で使用できます。

例)ユーザーがヨーロッパ出身で、入力パラメーターとして「DD.MM.YY」と「hh:mm」を使用している場合、次のように変換して連結します。

 WHERE dateCol between convert(DATETIME, 
                               convert(char(11), 
                                       convert(DATETIME, '01.06.14', 4), 16) || ' ' || '00:00', 8) 
    AND convert(DATETIME, 
                convert(char(11), 
                        convert(DATETIME, '01.07.14', 4), 16) || ' ' || '16:00', 8)
于 2014-08-01T12:42:49.187 に答える