2009-08-20 11 views
2

Können Sie mir sagen, das Datum in der SQLite-Datenbank ist als 12/3/1899 statt 12/3/2009. Ich füge das korrekte Datum beim Speichern in diesem Format ein. Ich kann nicht verstehen, was der Grund ist. Welche Konvertierung muss in Insert-Anweisung vorgenommen werden. Kann mir jemand helfen?Datum in der Tabelle gespeichert ist falsch in 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, 
) 

Meine Insert Statement ist wie folgt:

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') 
) 

ich installiert habe SQLite 3.3.8 und mein Betriebssystem ist Windows Vista.

Jede Hilfe würde geschätzt ..

Grüße

Asif

+3

Bitte poste den Code, den du verwendest, der es viel einfacher für Leute macht, dir zu helfen. – balpha

+0

Bitte überprüfen Sie den folgenden Code: Ich habe in datetime ('') konvertiert, aber gibt mir seltsame Fehler: SQL-Logik Fehler oder fehlende Datenbank –

+0

Bitte fügen Sie keine zusätzlichen Informationen in eine Antwort; Klicken Sie stattdessen unterhalb der Frage auf "Bearbeiten", um die Informationen dort anzuhängen. Ich habe den Text aus Ihrer Antwort in Ihre Frage aufgenommen; jetzt lösche bitte deine "antwort". – balpha

Antwort

5

Das SQLite Format für Datum ist der ISO-Standard, dh YYYY-MM-DD und nicht die, die Sie verwendet haben Siehe Sqllite date format

Versuchen Sie SELECT Datum ('jetzt'); zu sehen

2

Diese link enthält einige Informationen, die Sie lesen sollten mit TIMESTAMP und DATETIME für SQLite.

Hier ein Auszug:

TIMESTAMP, DATETIME- Eine String Art von unbegrenzter Länge zu speichern Datum/Zeit-Kombinationen verwendet. Das erforderliche Format ist 'JJJJ-MM-TT HH: MM: SS', alles, was nicht diesem Muster folgt, wird ignoriert.

+2

Dieser Link ist spezifisch für einen bestimmten libdbi-Treiber, * nicht * für SQLite im Allgemeinen. SQLite erzwingt kein bestimmtes Format für DATETIME-Felder (DATETIME ist kein intern erkanntes Format; intern unterscheidet es nur zwischen null/Ganzzahl/Gleitkomma/Text/Binär-Blob). Nach den Angaben von Marks Antwort erwarten die von SQLite bereitgestellten Datums-/Uhrzeitfunktionen jedoch, dass Datumsangaben in einem begrenzten Satz von Formaten angegeben werden (von denen eines das von Ihnen empfohlene Format ist). –

0

hatte ich Probleme mit diesem auch ... Wenn Ihr VB.NET hier verwendet wird, wie die Timestamp einzufügen, ich meine Datetime in SQLlite

DateTime.UtcNow.ToString („o“)

der wichtige Teil ist die .ToString ("o"), weil dies das Datum ISO-Formate 8601

Hier ist der Link, der alles über das Format erklärt - http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip

Es sieht so aus, wenn es in die Datenbank geht. 2010-12-16T02: 09: 55.7870590Z

Aber nach dem Einfügen der Daten sieht es so aus.

12/16/2010 2:09:55 AM

Hope this da draußen jemand anderes hilft.

Verwandte Themen