3

私はレガシーRDBデータベースに接続している.Net WinFormsアプリケーションに取り組んでいます...

日付のフィールドの一部は整数として保存されます (2010-01-04 が整数 20100104 であると想像してください)。

.Net の世界では、むしろ datetime オブジェクトを操作したいのですが、整数を日付に変換できましたが、見栄えが悪く、多くの行を必要とし、エラーが発生しやすく、誰かがそれを改善できるかどうか疑問に思っています...どうもありがとう!

注 - データベースを編集できないため、「関数」の任意の形式を作成することは問題外です...

整数を日時として選択する現在の方法は次のとおりです。

select
CAST(
SUBSTRING(DATE_COL AS VARCHAR(8)) FROM 1 FOR 4) ||
'-' ||
SUBSTRING(CAST(DATE_COL) AS VARCHAR(8)) FROM 5 FOR 2) ||
'-' ||
SUBSTRING(CAST(DATE_COL) AS VARCHAR(8)) FROM 7 FOR 2) ||
' 00:00:00'
AS TIMESTAMP) AS DATE_COL
from MY_TABLE
where ...
4

3 に答える 3

3

Rdbをいじらなければならなかったのは久しぶりです。次のようにして TIMESTAMP データ型に変換する方法があったことを思い出したようです

CAST('YYYYMMDDHHMMSSTT' AS TIMESTAMP)

WHERE 'YYYYMMDDHHNNSSTT' は、年-月-日-時-分-秒-分数形式の文字列です。ここでは、TIMESTAMP の代わりに DATE ANSI を使用する必要があるかもしれません。いずれにせよ、次の方法でうまくいく可能性があります。

SELECT CAST((CAST(DATE_COL AS CHAR(8)) || '00000000') AS TIMESTAMP)...

これはまだ醜いですが、おそらくすべてのサブストリングよりも優れています。とにかく、少し遊んでみてください。きっと理解できると思います。

于 2010-01-04T13:00:44.477 に答える
1

date_colOracle では、TO_DATEを文字列にキャストした後に使用できます。

TO_DATE(TO_CHAR(date_col), 'YYYYMMDD')

...または日付形式の「YYYYDDMM」。

参考文献:

于 2010-01-04T02:16:26.447 に答える
0

LINQ ライブラリを使用しないのはなぜですか? とても素敵でパワフルです。

実行している典型的なクエリは何ですか (高レベルの擬似コードをお願いします)。

于 2010-01-04T02:15:46.307 に答える