T-SQL使用哪种日期格式?它依赖于系统日期吗?我如何确保无论系统日期格式如何,我的参数都能正确传递。这个问题来,因为错误的:哪种SQL日期格式
Error converting data type nvarchar to datetime.
的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;
}
编辑的问题。
[这里](https://msdn.microsoft.com/ru-ru/library/ms187928.aspx)关于将varchar转换为数据类型的链接 –
@ N.Molderf谢谢。然而,这里的问题不是关于SQL中的日期格式,而是我如何知道/获得当前使用SQL的日期格式,或者使用任何SQL日期格式的每一个工作时间的ONE函数。所以我在我的c#应用程序中发送参数,而GUI日期控件按照系统日期格式更改日期格式 - 很好:我会认为SQL遵循相同的逻辑,但显然不是 - 我如何传递这些参数。 – Chagbert
理想情况下,如果您从另一种语言访问SQL,请使用*参数*作为DateTime值传递数据,让语言绑定/数据访问库处理SQL Server的'datetime'类型的转换并避免传递它作为*字符串*在所有。格式问题仅在将值作为*字符串*而非适当类型传递时才会出现。 –