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 回答