在 C# 中更改 DateTime 变量的格式,而不是字符串输出

bar*_*_dp 0 c# asp.net datetime stored-procedures datetime-format

如何将 C# DateTime 变量的格式从 转换d/M/yyyy HH:mm:ssyyyy/M/d HH:mm:ss
我不想更改字符串输出,而是 DateTime 变量本身。

我有一个带@date日期时间参数的存储过程。现在我试图将一个 DateTime 变量Today从 C# 传递给这个存储过程。C# DateTime 变量采用格式,d/M/yyyy HH:mm:ss但存储过程需要格式yyyy/M/d HH:mm:ss

我尝试使用 LINQ to SQL: 代码:

public static object SP_SelectSalesPriceItem()
{
    var query = dc.SP_SalesPrice(DateTime.Now);
    return query;
}
Run Code Online (Sandbox Code Playgroud)

存储过程:

ALTER PROCEDURE [dbo].[SP_SalesPrice]
    @Date datetime
AS
BEGIN
    SET NOCOUNT ON;


    select SalesPrice.[Item No_]
    from Sales Price 
    where [Starting Date] < @Date and ([Ending Date] > @Date 
Run Code Online (Sandbox Code Playgroud)

这是我在 asp.net 中得到的错误: 指定的强制转换无效。

堆栈跟踪:

[InvalidCastException:指定的转换无效。]
System.Data.SqlClient.SqlBuffer.get_Int32() +5002837
System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i) +38
Read_SP_SalesPriceResult(ObjectMaterializer 2.MoveNext() +32 System. Web.UI.WebControls.ListView.CreateItemsWithoutGroups(ListViewPagedDataSource dataSource, Boolean dataBinding, InsertItemPosition insertPosition, ArrayList keyArray) +222 System.Web.UI.WebControls.ListView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +1040 System.Web.UI. WebControls.ListView.PerformDataBinding(IEnumerable 数据) +44 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable 数据) +1281 ) +1477
System.Data.Linq.SqlClient.ObjectReader





System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +33
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +143
System.Web.UI.WebControls.ListView.PerformSelect() +113
System. Web.UI.WebControls.BaseDataBoundControl.DataBind() +74
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +66
System.Web.UI.WebControls.ListView.CreateChildControls() +55
System.Web.UI.Control .EnsureChildControls() +102
System.Web.UI.Control.PreRenderRecursiveInternal() +42
System.Web.UI.Control.PreRenderRecursiveInternal() +175
System.Web.UI.Control.PreRenderRecursiveInternal() +175
System.Web.UI.Control.PreRenderRecursiveInternal() +175
System.Web.UI.Control.PreRenderRecursiveInternal() +175
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496

Ode*_*ded 5

您要求的内容是不可能的,原因很简单, aDateTime 没有格式

格式是 a 的字符串表示形式DateTime

存储过程应该接受一个DATETIME参数@date- 如果不是,你做错了什么。

如果您正在使用NVARCHAR或这种类型的,你需要调用ToStringDateTime在C#中使用正确的格式添加参数值之前。