0

テーブルの値のペアをストアド プロシージャに渡すコードを次に示します。DOJ フィールドは DateTime で、SP では DOJ フィールドは日付です。どちらも互換性があります。出力は dd/MM/yyyy のようになります。

DOJ フィールドが DateTime で SP の場合、DOJ フィールドは DateTime2(3)、o/p は dd/MM/yyyy hh:mm:ss ですが、o/p は dd/MM/yyyy である必要があります。コードはどのように記述すればよいですか?

dt1.Columns.Add("DOJ", typeof(System.DateTime)); 
DataRow dr1 = dt1.NewRow();
dr1["DOJ"] = DateTime.ParseExact("02/03/2001", formats, us, DateTimeStyles.None); 

// dr1["DOJ1"] = "12/13/2001";   if i use  this one it works .

dt1.Rows.Add(dr1);    // Get DOJ as - 3/2/2001 12:00:00 AM
ds1.Tables.Add(dt1);

ここに私のストアドプロシージャコードがあります -

-- CREATE TYPE StateTbls7 AS TABLE
( StateID   VARCHAR(200)
, StateCode VARCHAR(200)
, StateName VARCHAR(200)
, DOJ      date            
)

ALTER PROCEDURE sp_Add_contact
    (
      @ds1 StateTbls7 readonly
    )
AS
    begin
              declare @DOJ       VARCHAR(200)
          select @DOJ = d1.DOJ   from @ds1   d1
              select  @DOJ as 'a1'
    end
return
4

2 に答える 2

0

「フォーマット」宣言を削除

代わりに、C# で次のように変更します。

dr1["DOJ"] = DateTime.ParseExact("02/03/2001", us, DateTimeStyles.None).ToString("d");

参考になれば幸いです。結果を教えてください。

于 2013-12-21T10:11:05.390 に答える
0

このようにSQLクエリを変更してみてください

 ....Code before this

      select @StateID = d1.StateID 
            ,@StateCode = d1.StateCode  
            ,@DOJ = convert(varchar(15), d1.DOJ, 103) -- 103 is dd/MM/yyyy
      from @ds1   d1

 ....Rest of the Code

ここで、日付時刻をテキストにキャストし、時刻を削除しました

これが役立つことを願っています!

于 2013-12-21T09:56:25.093 に答える