2009-08-20 7 views
2

SQLiteデータベースの日付が12/3/2009ではなく 12/3/1899となっていることが分かりますか? この形式で保存している間に正しい日付を挿入しています。私はその理由を理解できません。Insert Statementで何を変換しなければなりません。誰でも私を助けることができます。テーブルに格納されている日付がSQLiteで間違っています

CREATE TABLE [PIs] ([PIGUID] GUID PRIMARY KEY NOT NULL, 
[CompanyGUID] GUID NOT NULL, 
[No] varCHAR(50) NOT NULL, 
[Dt] TIMESTAMP NOT NULL, 
[SupplierLgrGUID] GUID NOT NULL, 
[SupplierLgrAddressGUID] GUID NOT NULL, 
[SupplierBillNo] varCHAR(50) NULL, 
[SupplierBillDt] TIMESTAMP NULL, 
[CrDays] INTEGER NULL, 
[DueDt] TIMESTAMP NULL, 
[Narration] varCHAR(300) NULL, 
[CreatedDt] TIMESTAMP NOT NULL, 
[LastEditedDt] TIMESTAMP NOT NULL, 
) 

私のINSERT文は以下の通りである:私はSQLiteの3.3.8をインストールしていると私のオペレーティングシステムは、Windows Vistaで

INSERT INTO PIs(
    PIGUID,CompanyGUID,No,Dt,SupplierLgrGUID,SupplierLgrAddressGUID, 
    SupplierBillNo,SupplierBillDt,CrDays,DueDt,Narration,CreatedDt, 
    LastEditedDt) 
VALUES(
    '806aeec2-762a-432e-800f-0354df3b7852' , 
    '375888f5-e1a5-4c75-9154-62ffc83dca97', 'PI/0809/004' , 
    datetime('8/19/2009 12:44:25 PM'), 
    'ff376218-c2d9-4e02-86e6-e90c8d5efc43', 
    '7dad4725-2e37-4596-88f4-7b088f0d91c4', '0021', 
    datetime('8/19/2009 12:44:25 PM'), 12, 
    datetime('8/31/2009 12:44:25 PM'), 'narration', 
    datetime('now'),datetime('now') 
) 

任意の助けをいただければ幸いです

..

よろしく

アシフ

+3

あなたが使用している文字コードを投稿してください。そうすれば、人々があなたを助けやすくなります。 – balpha

+0

以下のコードをチェックしてください:私は日時( '')に変換しましたが、奇妙なエラーが表示されます:SQLロジックエラーまたはデータベースがありません –

+0

回答に追加情報を入れないでください。むしろ質問の下にある「編集」をクリックして情報を追加してください。私はあなたの答えのテキストをあなたの質問に取り入れました。今あなたの "答え"を削除してください。 – balpha

答えて

5

日付のsqliteのフォーマットは、ISO標準すなわちYYYY-MM-DDはなく、あなたが使用している1 Sqllite date formatを参照してくださいです

試行 選択日( 'now'); to

2

このlinkには、SQLiteのTIMESTAMPとDATETIMEを使用して読んでおくべき情報があります。

TIMESTAMP、DATETIME ストア日付/時刻の組み合わせに使用無制限の長さの文字列型:

は、ここでの抜粋です。必要な形式は 'YYYY-MM-DD HH:MM:SS'です。このパターンに従わないものは無視されます。

+2

そのリンクは特定のlibdbiドライバに固有のものですが、一般的にはSQLiteではありません。 SQLiteはDATETIMEフィールドに特定のフォーマットを強制しません(DATETIMEは内部的に認識されるフォーマットではなく、内部的にはNULL /整数/浮動小数点/テキスト/バイナリBLOBを区別します)。これは、Markの答えで示されているように、SQLiteが提供する日付/時刻関数は、限られた形式の形式のうちの1つで日付を指定することを期待しています。 –

0

私はDateTime.UtcNow.ToString(「O」)

あなたのここでVB.NETを使用してタイムスタンプを挿入する方法であれば、私はSQLlite

へのDateTimeを意味する...また、このいずれかとのトラブルがありました

重要な部分は、これはISO 8601に日付をフォーマットするため、ここで

.ToString(「O」)でフォーマットについてのすべてを説明するリンクです - http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip

データベースに入ると、このように見えます。 2010-12-16T02:09:55.7870590Z

しかし、データを挿入すると、次のようになります。

2010年12月16日2時09分55秒AM

これはそこに誰か他の人に役立ちます希望

関連する問題