0

ASP.Net アプリケーションがあります。バックエンドでMySqlを使用しています。そして3つ質問があります。

MySql に BeginDate というフィールドがあり、DataType: Date です。2012-06-17の形式で DB に書き込まれます。

select ステートメントを書き、フォームビューのテキスト ボックスに日付を入れると、形式が次のように変わります: 06/17/2012 12:00:00 AM

日付を更新しようとすると、行 1 の日付の形式が間違っているというエラーが表示されます。

けっこうだ。DB に保存されているのと同じ形式で入力します: 2012-06-17

そして、アップデートは機能します。

私が混乱しているのは、フォーマットが2012-06-17の DB である場合です。

  1. なぜasp.netはそれをひっくり返して次のようにフォーマットするのですか: 06/17/2012 12:00:00 AM、明示的に指示せずに。また、元の DB 形式に戻らないのはなぜですか?

  2. 2012 年 6 月 17 日、この形式を受け入れてエラーが発生しないように Mysql に指示するにはどうすればよいですか?

  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 に答える