【发布时间】:2023-03-17 20:09:02
【问题描述】:
我试图以整数形式返回今天的日期。我试图将它作为字符串返回,它工作正常。但是如何将它作为整数返回呢?
public string ConvertInvoiceDate()
{
return DateTime.Today.ToString("yyyyMMdd");
}
整数的格式应与 yyyyMMdd 相同。这里的返回类型是字符串,因为我正在尝试使用字符串。现在我不确定我是否必须返回 long/double。使用 BizTalk 我试图将一个值插入到类型为数字的 Oracle DB 中的字段中。当我尝试以字符串形式返回时,它会以The value for field "INVOICE_DTE" is invalid. ---> System.FormatException: The string '20170626' is not a valid AllXsd value.
数据库中字段的详细信息如下
完整的错误信息是
A message sent to adapter "WCF-Custom" on send port "WcfSendPort_OracleDBBinding_Table_MACINVOICE_Custom" with URI "oracledb://xxxxx/" is suspended.
Error details: Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: The value for field "INVOICE_DTE" is invalid. ---> System.FormatException: The string '20170626' is not a valid AllXsd value.
at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
at System.Xml.XmlConvert.ToDateTime(String s, XmlDateTimeSerializationMode dateTimeOption)
at Microsoft.Adapters.OracleCommon.OracleCommonMetadataUtils.ConvertXmlToLob(String text, XmlTypeCode xmlTypeCode, QualifiedType qualifiedType, String fieldName)
--- End of inner exception stack trace ---
Server stack trace:
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)
MessageId: {449B56A2-B053-47A4-826A-400B97CFB9A1}
InstanceID: {DEA7CAA7-D589-4A4E-81A0-A2C6A961D340}
【问题讨论】:
-
将日期作为整数返回是什么意思?日期应该映射到什么值?如果你想要一个 int,为什么你的函数会返回一个字符串?
-
return 0?如果不定义整数实际代表什么,就无法回答这个问题。 -
你的方法被声明为返回一个字符串,而不是一个 Int...
-
@Sid Oracle 也有
date类型。 not 将字符串转换为整数也会有任何问题。错误是 NOT 关于字符串到整数的转换。这是一个 XML 转换错误。 XML 日期通常遵循 ISO8601 格式。 -
@Sid 这显然是一个 XML 错误。它说你试图传递一个无效的
XsdDateTime值。xsd::datetime是一个使用ISO8601格式的字符串,即2017-06-23T13:14:15Z