Как преобразовать "string" в "timestamp without time zone"
Я новичок в 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
?
Ответы
Ответ 1
Строковое представление timestamp
зависит от ваших настроек локали. Поэтому, чтобы избежать двусмысленности, приводящей к тому, что Postgres кашляют исключение, у вас есть два варианта:
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')
Ответ 2
Чтобы преобразовать строку в метку времени без часового пояса, для Postgresql я использую приведенный выше
SELECT to_timestamp('23-11-1986 09:30:00', 'DD-MM-YYYY hh24:mi:ss')::timestamp without time zone;