【问题标题】:Date and DateTime problem日期和日期时间问题
【发布时间】:2011-01-20 15:45:55
【问题描述】:

我正在使用 ASP.NET (C#) 和 SQLServer 2008 开发应用程序。在我的数据库中,我有一个字段 DepositDate 并且数据类型是“DATE”。在我的数据输入表单上,我使用 jquery datepicker 获取日期,并根据用户要求将其在文本框中的返回日期作为 dd/mm/yyyy 格式,而我在数据库中注意到它的日期值保持为 yyyy-mm-dd ..我很困惑。

在保存记录时,我得到的日期时间无效,因为唯一可用的转换格式是 Convert.ToDateTime,而我的数据要求仅为 DATE。

任何人都可以提出解决方案如何处理它。?

这里是代码

       DateTime thedate = DateTime.Parse(txt_IDate.Text);
       DateTime mdate = DateTime.Parse(txt_Mdate.Text);

       db.AddInParameter(cmd, "@SIssueDate", System.Data.DbType.Date);
       db.SetParameterValue(cmd, "@SIssueDate", thedate.ToShortDateString());

       db.AddInParameter(cmd, "@SMaturityDate", System.Data.DbType.DateTime);
       db.SetParameterValue(cmd, "@SMaturityDate", mdate.ToShortDateString());

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    你为什么首先将参数值设置为 strings?只需使用 DateTime 值本身:

    db.AddInParameter(cmd, "@SIssueDate", DbType.Date);
    db.SetParameterValue(cmd, "@SIssueDate", thedate);
    
    db.AddInParameter(cmd, "@SMaturityDate", DbType.DateTime);
    db.SetParameterValue(cmd, "@SMaturityDate", mdate);
    

    我怀疑您的数据库是否以任何特定字符串格式存储值...它们不是字符串,它们是日期。这就像询问数据库是以十六进制还是十进制格式存储整数......它只是存储数字。

    基本上,您需要以适当的格式解析用户的输入数据(大概您已经在这样做),然后在获取时再次格式化。除了表示层之外,您应该认为它只是一个日期值,没有任何关联的格式。

    想象一下来自不同国家/地区的两个用户可能会有所帮助,他们每个人都查看日期列表。每个人都希望以适合他们文化的格式查看这些日期 - 因此他们可能会看到不同的表示,但他们会看到相同的实际日期。 p>

    【讨论】:

      【解决方案2】:

      如果这适合你,你可以像 thedate.ToString("yyyy-MM-dd") 那样做,你只会得到 2011-01-20

      【讨论】:

      • 不,这是不对的。阅读乔恩的答案。为什么要在日期的时候创建一个字符串???
      • Jon 是正确的..我几乎解决了我的问题..剩下的唯一问题是我从 datepicker 的返回日期格式是 dd/mm/yyyy 但在日期传递到参数期间它由于 mm 而被拒绝/dd/yyyy..hummm
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2014-09-04
      相关资源
      最近更新 更多