【发布时间】:2015-08-16 02:10:18
【问题描述】:
T-SQL 使用哪种日期格式?它依赖于系统日期吗?无论系统日期格式如何,如何确保我的参数正确传递。这个问题是因为错误:
将数据类型 nvarchar 转换为日期时间时出错。
部分 SQL 脚本:
CREATE PROCEDURE [dbo].[sz_pipeline04_pipelUpdte_inventory]
-- Add the parameters for the stored procedure here
@myFixDte datetime,
@doInsert bit
AS
BEGIN
调用c#代码:
public static DataTable GridInventory(string strdProcedureName, DateTime fixDate, bool execInsertYN)
{
DataTable dtbl_inventory = null;
try
{
dtbl_inventory = new DataTable();
using (var conn = new SqlConnection(cls_connRegistry.GetConnStrFull()))
using (var command = new SqlCommand(strdProcedureName, conn)
{
CommandType = CommandType.StoredProcedure
})
{
command.Parameters.Add("@myFixDte", SqlDbType.DateTime).Value = DateTime.Parse(fixDate.ToShortDateString());
command.Parameters.Add("@doInsert", SqlDbType.Bit).Value = execInsertYN;
conn.Open();
SqlDataReader dr = command.ExecuteReader();
dtbl_inventory.Load(dr);
conn.Close();
}
}
catch (Exception datawalile)
{ dtbl_inventory = null; }
return dtbl_inventory;
}
已编辑问题。
【问题讨论】:
-
Here关于将varchar转换为数据类型的链接
-
@N.Molderf 谢谢。但是,这里的问题不是关于 SQL 中的日期格式,而是关于我如何知道/获取在 SQL 中使用的当前日期 FORMAT,或者一个可以在任何时候使用任何 SQL 日期格式的函数。所以我在我的 c# 应用程序中发送参数,并且 GUI 日期控件根据系统日期格式更改日期格式 - 很好:我原以为 SQL 遵循相同的逻辑,但显然不是 - 我如何传递这些参数。
-
理想情况下,如果您从其他语言访问 SQL,请使用 parameters 将数据作为
DateTime值传递,让语言绑定/数据访问库处理转换为 SQL Server 的datetime类型,并避免将其作为 string 传递。仅当您将值作为 string 而不是适当的类型传递时,才会出现格式问题。 -
@Damien_The_Unbeliever:好吧,我来回尝试过(日期或字符串参数),但失败了。这是我的脚本:
-
如果您想显示更多代码,请edit您的问题。
标签: c# sql sql-server tsql datetime