28

Postgresql は初めてで、WCF サービスを使用しています。
ここに私のコードスニペットがあります:

$.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'              
});

ここ:

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

このフィールドのデータ型はtimestamp without time zone.
この文字列をtimestamp without time zoneデータ型に変換する方法は?

4

2 に答える 2

43

timestamp(= )の文字列表現は、timestamp without time zoneロケール設定によって異なります。したがって、あいまいさが原因でデータ エラーが発生したり、Postgres が例外を発生させたりするのを避けるには、次の 2 つのオプションがあります。

1.) ISO 8601 形式を使用します。これは、どのロケールまたはDateStyle設定でも同じように機能します。

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

ユースケースによっては、データ型をコンテキストから導出できない場合に、文字列リテラルを明示的にキャストする必要がある場合があります。

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

2.)一致するテンプレート パターンをtimestamp使用して文字列を変換します。to_timestamp()

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

timestamptzこれは、現在のタイムゾーン設定を想定して を返します。通常、(アサイメントのように) タイプはそれに応じて強制されます。の場合timestamp、これは時間オフセットが切り捨てられ、期待値が得られることを意味します。繰り返しますが、ターゲットの型がコンテキストから派生できない場合は、明示的にキャストする必要がある場合があります。

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

それは単に時間オフセットを取り除くだけなので、期待値になります。またはAT TIME ZONE、選択したタイムゾーンで構成を使用します。

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

ターゲット タイム ゾーンは現在の設定と同じですが、timezone変換は行われません。それ以外の場合、結果のタイムスタンプはそれに応じて転置されます。参考文献:

于 2013-09-20T14:42:48.693 に答える
27

文字列をタイムゾーンなしのタイムスタンプに変換するには、Postgresql の場合、上記を使用します

SELECT to_timestamp('23-11-1986 09:30:00', 'DD-MM-YYYY hh24:mi:ss')::timestamp without time zone;
于 2014-06-22T18:11:30.050 に答える