【问题标题】:Converting datetime to date in asp.net using oracle使用 oracle 在 asp.net 中将日期时间转换为日期
【发布时间】:2019-07-26 03:00:44
【问题描述】:

我从我的 jQuery 日期时间选择器中获得了这个日期,我能够检索用户选择的内容,但在 Oracle 中,Datehired 的数据类型是Date

问题是我如何将其转换为日期,以便将其插入我的数据库中?

这是来自 jQuery 的日期:

 string dt = Request.Form[txtDate.UniqueID];

这是我的 jQuery:

<asp:TextBox ID="txtDate" runat="server" ReadOnly = "true"></asp:TextBox>
<script type="text/javascript">
$(function () {
    $("[id*=txtDate]").datepicker();
});
</script>

我的插入语句:

string query = "sp_employee_insert";

if (con.State == ConnectionState.Open)
{
    con.Close();
}

con.Open();

OracleCommand cmd = new OracleCommand(query, con);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@in_EMPLOYEEID", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_EMPLOYEENAME", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_STATUS", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_SUPERIORID", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_MANAGERSUPERIORID", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_BFG", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_DATEHIRED", OracleDbType.Date);
cmd.Parameters.Add("@in_DESIGNATION", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_JOBGRADE", OracleDbType.Int32);
cmd.Parameters.Add("@in_EMAILADDRESS", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_PRODUCTLINE", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_STATION", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_MACHINE", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_OPERATIONGROUP", OracleDbType.Varchar2);
cmd.Parameters.Add("@in_ISACTIVE", OracleDbType.Varchar2);

cmd.Parameters["@in_EMPLOYEEID"].Value = txtEMPLOYEEID.Text;
cmd.Parameters["@in_EMPLOYEENAME"].Value = txtEMPLOYEENAME.Text;
cmd.Parameters["@in_STATUS"].Value = txtSTATUS.Text;
cmd.Parameters["@in_SUPERIORID"].Value = txtSUPERIORID.Text;
cmd.Parameters["@in_MANAGERSUPERIORID"].Value = txtMANAGERSUPERIORID.Text;
cmd.Parameters["@in_BFG"].Value = txtBFG.Text;
cmd.Parameters["@in_DATEHIRED"].Value = date;
cmd.Parameters["@in_DESIGNATION"].Value = txtDESIGNATION.Text;
cmd.Parameters["@in_JOBGRADE"].Value = txtJOBGRADE.Text;
cmd.Parameters["@in_EMAILADDRESS"].Value = txtEMAILADDRESS.Text;
cmd.Parameters["@in_PRODUCTLINE"].Value = txtPRODUCTLINE.Text;
cmd.Parameters["@in_STATION"].Value = txtSTATION.Text;
cmd.Parameters["@in_MACHINE"].Value = txtMACHINE.Text;
cmd.Parameters["@in_OPERATIONGROUP"].Value = txtOPERATIONGROUP.Text;
cmd.Parameters["@in_ISACTIVE"].Value = txtISACTIVE.Text;

cmd.ExecuteNonQuery();

【问题讨论】:

  • Oracle 中的 date 数据类型始终包含日期和时间组件。如果您对其应用trunc,则该值将“四舍五入”到当天午夜(例如 26.07.2019 07:13:22 将变为 26.07.2019 00:00:00),但时间 (00:00:00 ) 将会留存。因此,看看应用to_char 函数和适当的格式掩码(在目标中可识别)是否会有所帮助;例如,to_char(date_value, 'dd.mm.yyyy') 将导致 26.07.2019(不会再有 00:00:00)。
  • 我的意思是,字符串日期 = Request.Form[txtDate.UniqueID];如何 iconvert 这个,对不起,我是 oracle 和 asp.net 的新手
  • 当我使用 toad 时,为什么表中的数据只有 2019 年 7 月 26 日
  • 我对asp.net一无所知。从 TOAD 开始:您看到的日期格式取决于您在 TOAD Options 中设置该属性的方式。

标签: c# asp.net oracle tns


【解决方案1】:

Oracle 必须具有令人惊叹的日期功能。 to_charto_date

说我有DAteTime 正在关注:8/13/2009 12:00:00 AM

所以你的 SQL 语句只需使用 to_date 函数。此函数接受 2 个参数。第一个是给定的日期,第二个是格式。

前:

to_date('" + DTtoOracle.Date.ToString("yyyy-MM-dd") + "','yyyy-mm-dd')

所以我们正在做的是从您的 datetime 变量中指定第一个参数的格式,并在第二个参数上指定您要告诉 oracle 您发送到数据库的格式是什么。

完整版:

SELECT * FROM MYTABLE WHERE DATEFIELD = to_date('" + DTtoOracle.Date.ToString("yyyy-MM-dd") + "','yyyy-mm-dd');

这应该返回您的日期字段 = 与您的变量相同的日期的所有记录。希望这有帮助。干杯

【讨论】:

  • 我的代码看起来像这样,但仍然不起作用 cmd.Parameters["@in_DATEHIRED"].Value = " TO_CHAR('" + date + "','MM/dd/YYYY')" ;
  • 您应该先尝试转换日期,然后将值赋给参数。
  • 这也是我在 asp.net 中的另一个问题,当我尝试使用 convert.toint32 对其进行转换时,日期是字符串格式,它返回错误,这是我在日期时间选择器字符串中的代码 date = Request.Form[txtDate.UniqueID];有没有办法将其转换为日期?
  • 阅读this 了解如何转换日期。您不能将日期转换为Convert.ToInt32
  • 对不起,我的意思是将此字符串转换为日期时间。字符串在 MM/dd/yyyy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
相关资源
最近更新 更多