0

我有一个 ASP.Net 应用程序。我在后端使用 MySql。我有3个问题。

我在 MySql 中有一个名为 BeginDate 的字段,它是 DataType:Date。它以这种格式写入数据库:2012-06-17

当我编写一个选择语句并将日期拉入 formview 文本框时,格式更改为:06/17/2012 12:00:00 AM

当我尝试更新日期时,我收到一条错误消息,指出第 1 行的日期格式错误。

很公平。我以存储在数据库中的相同格式键入:2012-06-17

并且更新有效。

我感到困惑的是,如果格式起源于:数据库中的2012-06-17

  1. 为什么 asp.net 将其翻转并将其格式化为:06/17/2012 12:00:00 AM,而我没有明确告诉它。为什么它翻转回原来的 DB 格式?

  2. 如何告诉 Mysql 接受这种格式,2012 年 6 月 17 日并且没有收到错误?

  3. 我需要截断文本框中显示的时间戳。我只想要日期。

添加注释。日期是由 Ajax 控件日历选择器设置的,它会格式化它:06/17/2012 没有时间戳。这就是我想要的。

**编辑这是我的更新命令和参数:

 Update discount set DiscountPromotionalID = @DiscountPromotionalID,
 isActive =@isActive, Title = @Title, BeginDate = @BeginDate, EndDate = @EndDate, 
 DiscountPercentage = @DiscountPercentage
  where DiscountPromotionalID = @DiscountPromotionalID;" 

    <UpdateParameters>
      <asp:Parameter Name="oDiscountPromotionalID" Type="Int32" />
      <asp:Parameter Name="oisActive" Type="Object" />
      <asp:Parameter Name="oTitle" Type="String" />
      <asp:Parameter Name="oBeginDate" Type="DateTime" />
      <asp:Parameter Name="EndDate" Type="DateTime" />
      <asp:Parameter Name="oDiscountPercentage" Type="Decimal" />
    </UpdateParameters>
4

2 回答 2

3

日期没有“格式”;它们只是一个值。当 ASP.NET 显示 DateTime 值且未指定格式时,它使用运行它的机器(本例中为服务器)的默认格式。在您的情况下,默认格式是"MM/DD/YYYY hh:mm:ss tt". 由于您的 MySQL 字段是日期(无时间),因此包含时间组件会导致错误。

在发送回 MySQL 之前,格式化 DateTime 以剥离时间组件。由于您没有详细说明如何执行更新(SQL 连接?参数)?我不能举一个具体的例子。

更新

尝试使用该DATE函数提取 DateTime 值的日期部分:

Update discount set 
    DiscountPromotionalID = @DiscountPromotionalID,
    isActive = @isActive, 
    Title = @Title, 
    BeginDate = DATE(@BeginDate),
    EndDate = DATE(@EndDate), 
//etc.
于 2012-08-20T19:09:13.163 回答
2

1)没有看到你的代码很难说。我怀疑这是因为您将日期值分配给 DateTime 变量。

2)我不会这样做。我只会使用 ToString 方法将其转换为您需要的格式。(见下文)

3)如果您正在处理 DateTime ,那么您可以使用ToString(string format)方法来格式化您喜欢的日期。您将不得不检查,但我认为以下内容对您有用:myDateTime.ToString("yyyy-MM-dd");

于 2012-08-20T19:12:32.063 回答