哪个SQL日期格式



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;
    }

编辑问题。

你现在发布的代码看起来是正确的-除了一件事:

command.Parameters.Add("@myFixDte", SqlDbType.DateTime).Value = DateTime.Parse(fixDate.ToShortDateString());

正如我在评论中所说的,只有在转换为字符串时才会出现格式问题。所以请输入:

command.Parameters.Add("@myFixDte", SqlDbType.DateTime).Value = fixDate;

DateTime (c#)和datetime (T-SQL)没有格式。将它们转换为字符串时会出现格式问题。在它们的原生表示中,它们通常只是对过去某个固定点以来的事件数量(滴答、毫秒等)的计数。ADO。Net知道如何将DateTime转换为SQL Server datetime

如果您有剩余的转换问题,它在您尚未显示的代码中。但是,这将再次是因为您正在转换正确的数据类型(datetime)并使用字符串。

这不是有效的DATETIME格式DD-MM-YYYY

您可以在下列情况下使用CONVERT It:

DECLARE @myFixDte DATETIME
SET @myFixDte = CONVERT(DATE, N'30-12-2012', 104)
SELECT @myFixDte 

或者您可以设置它而不转换为其他格式,如YYYY-MM-DD

试试这个:

@myFixDte = convert(datetime, '30-12-2012', 105) 

并查看@N提供的链接。Molderf

SQL Server始终以相同的方式识别一种格式,无论它使用哪种区域性,该格式是YYYYMMDD

所以你总是可以使用2012020220151225格式的日期,SQL Server将使用相同的掩码解析参数

为什么你不像上面那样告诉c# datetime,这里有一个简单的例子为你如何解决这个问题,在你的情况下,它将是这样的

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("dd-MM-yyyy HH:mm:ss"); 

或者这个

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");

第二个是默认值

相关内容

  • 没有找到相关文章

最新更新