こんにちは、「17-09-2012 18:47:52.69」のようなデータを挿入する必要があります。関数PARSEDATETIMEはミリ秒を削減します。クエリの例:
CREATE TABLE TEST(ID NUMBER(19) not null,
DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
INSERT INTO TEST (ID, DATE) VALUES(1,
parsedatetime('17-09-2012 18:47:52.69', 'dd-MM-yyyy hh:mm:ss.SS'))
SELECTの後、ミリ秒がゼロであることがわかります。
ソリューションとは何ですか?
私のテストによると、H2バージョン1.3.170では、ミリ秒は実際にはゼロではなく、069です。
select * from test;
ID DATE
1 2012-09-17 18:47:52.069
以下を実行した場合も同じことが起こります。
call parsedatetime('17-09-2012 18:47:52.69', 'dd-MM-yyyy hh:mm:ss.SS');
ゼロを追加すると機能します:
call parsedatetime('17-09-2012 18:47:52.690', 'dd-MM-yyyy hh:mm:ss.SS');
H2は内部でJava.text.SimpleDateFormat
を使用するため、同じ制限に耐えなければなりません。 SimpleDateFormat
内で解決策を見つけた場合、H2のparsedatetime
関数内で使用できます。
別の方法は、JDBCで定義されているISOタイムスタンプ形式を使用することです。これは、JDBC標準に準拠するすべてのデータベースで動作するはずです。
INSERT INTO TEST VALUES(2, {ts '2012-09-17 18:47:52.69'});