So konvertieren Sie “String” in “Zeitstempel ohne Zeitzone”

Lesezeit: 2 Minuten

Benutzer-Avatar
Aijaz Chauhan

Ich bin neu bei Postgresql und verwende WCF-Dienste.
Hier ist mein Codeschnipsel:

$.ajax({
    url: '../Services/AuctionEntryServices.svc/InsertAuctionDetails',
    data: JSON.stringify({ "objAuctionEntryEntity": {
        "AuctionNO": '',          
        "AuctionDate": $('[Id$="lblAuctionDateVal"]').text(),
        "TraderID": $('[Id$="ddlTraderName"] option:selected').val(),
        "Grade": $('[Id$="ddlGrade"] option:selected').val(),
        "Varity": $('[Id$="ddlVarity"] option:selected').val(), 
        "QuntityInAuction": $('#txtQuantityForAuction').val(),
        "AuctionRate": $('#txtAuctionRate').val(),
        "BrokerID": a[0],
        "IsSold": $('#chlIsSold').is(':checked'),
        "CreatedBy": $.parseJSON(GetCookie('Admin_User_In_Mandi')).UserID,
        "UpdatedBy": $.parseJSON(GetCookie('Admin_User_In_Mandi')).UserID,
        "CreationDate": GetCurrentDate().toMSJSON(),
        "IsActive": true,
        "AuctionTransaction": arrAuctionTransaction,
        "MandiID": $.parseJSON(GetCookie('Admin_User_In_Mandi')).MandiID,
        "FarmerID": _ownerid,
        "AuctionNO": _auctionno,
        "AmmanatPattiID": _ammantpattiid,
        "ToTraderID": b[0],
        "ToTraderName": $('#txtOtherBuyerNameEN').val(),
        "ToTraderName_HI": $('#txtOtherBuyerNameHI').val()
    }
}),
    type: 'POST',
    contentType: 'application/json',
    dataType: 'json'              
});

Hier:

$('[Id$="lblAuctionDateVal"]').text() = "20/8/2013 14:52:49" 

Und mein Datentyp für dieses Feld ist timestamp without time zone.
So konvertieren Sie diese Zeichenfolge in timestamp without time zone Datentyp?

Benutzer-Avatar
Erwin Brandstetter

Zeichenfolgendarstellung von a timestamp (= timestamp without time zone) hängt von Ihren Gebietsschemaeinstellungen ab. Um Zweideutigkeiten zu vermeiden, die zu Datenfehlern führen oder Postgres eine Ausnahme ausspuckt, haben Sie daher zwei Möglichkeiten:

1.) Verwenden ISO 8601-Formatdas funktioniert genauso mit irgendein Gebietsschema bzw DateStyle Einstellung:

'2013-08-20 14:52:49'

Je nach Anwendungsfall müssen Sie das Zeichenfolgenliteral möglicherweise explizit umwandeln, wenn der Datentyp nicht aus dem Kontext abgeleitet werden kann:

'2013-08-20 14:52:49'::timestamp

2.) Konvertieren Sie die Zeichenfolge in timestamp verwenden to_timestamp() mit passendem Schablonenmuster:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')

Dies kehrt zurück timestamptz, wobei die aktuelle Zeitzoneneinstellung angenommen wird. Typischerweise (wie bei einer Zuweisung) wird der Typ entsprechend erzwungen. Zum timestamp, bedeutet dies, dass der Zeitversatz abgeschnitten wird und Sie den erwarteten Wert erhalten. Wenn der Zieltyp nicht aus dem Kontext abgeleitet werden kann, müssen Sie möglicherweise explizit umwandeln:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')::timestamp

Da dies einfach den Zeitversatz entfernt, ergibt sich der erwartete Wert. Oder verwenden Sie die AT TIME ZONE Konstrukt mit einer Zeitzone Ihrer Wahl:

to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss') AT TIME ZONE 'UTC'

Während die Zielzeitzone mit Ihrer aktuellen übereinstimmt timezone Einstellung erfolgt keine Transformation. Andernfalls wird der resultierende Zeitstempel entsprechend transponiert. Weiterlesen:

  • Zeitzonen in Rails und PostgreSQL komplett ignorieren

Benutzer-Avatar
Georgios Syngouroglou

Um einen String in einen Zeitstempel ohne Zeitzone umzuwandeln, verwende ich für Postgresql das obige

SELECT to_timestamp('23-11-1986 09:30:00', 'DD-MM-YYYY hh24:mi:ss')::timestamp without time zone;

  • hey hallo, vielen dank kumpel. Ich habe gerade meine letzten 5 Stunden für die Suche hier verloren …..

    – cjahangir

    3. März 2019 um 20:39 Uhr

1176820cookie-checkSo konvertieren Sie “String” in “Zeitstempel ohne Zeitzone”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy