C# 在INSERT查询中使用GETDATE()可以将该日期返回给我吗?

C# 在INSERT查询中使用GETDATE()可以将该日期返回给我吗?,c#,sql,sql-server,C#,Sql,Sql Server,我使用以下代码将一行插入数据库,并使用GETDATE()设置日期。如果不运行第二个单独的查询来提取该日期,在同一个查询中是否有方法让它返回刚刚插入的日期 int resultCompletedDate = 0; using (SqlConnection connect = new SqlConnection(connectionString)) { string updateQueryCompletedDate = @"UPDATE Conversions

我使用以下代码将一行插入数据库,并使用
GETDATE()
设置日期。如果不运行第二个单独的查询来提取该日期,在同一个查询中是否有方法让它返回刚刚插入的日期

int resultCompletedDate = 0;

using (SqlConnection connect = new SqlConnection(connectionString))
{
    string updateQueryCompletedDate = @"UPDATE Conversions 
                                        SET CompletedDate = GETDATE(),
                                        Status = 'Completed'
                                        WHERE ID = @ID"; 

    SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
    command1.Parameters.AddWithValue("ID", item1.ID);

    connect.Open();
    resultCompletedDate = Convert.ToInt32(command1.ExecuteScalar());
    connect.Close();
}

使用批处理语句作为命令文本。您不需要逐字记录字符串,因为您没有使用反斜杠或双引号

DECLARE @completedDate datetime = GETDATE();
UPDATE Conversions SET CompletedDate = @completedDate, Status = 'Completed' WHERE Id = @id;
SELECT @completedDate;
不要使用
Convert.ToInt32
,只需使用
Convert.ToDateTime

Protip:使用
using
而不是手动关闭连接,因为如果
ExecuteScalar
引发异常,此时您的连接将不会关闭:

using(SqlConnection c = new SqlConnection( ... ))
using(SqlCommand cmd = c.CreateCommand()) {
    cmd.CommandText = "DECLARE @completedDate...";
    cmd.Parameters.AddWithValue("@id", item1.ID);
    c.Open();
    DateTime completedDate = Convert.ToDateTime( cmd.ExecuteScalar() );
    return completedDate;
}

使用批处理语句作为命令文本。您不需要逐字记录字符串,因为您没有使用反斜杠或双引号

DECLARE @completedDate datetime = GETDATE();
UPDATE Conversions SET CompletedDate = @completedDate, Status = 'Completed' WHERE Id = @id;
SELECT @completedDate;
不要使用
Convert.ToInt32
,只需使用
Convert.ToDateTime

Protip:使用
using
而不是手动关闭连接,因为如果
ExecuteScalar
引发异常,此时您的连接将不会关闭:

using(SqlConnection c = new SqlConnection( ... ))
using(SqlCommand cmd = c.CreateCommand()) {
    cmd.CommandText = "DECLARE @completedDate...";
    cmd.Parameters.AddWithValue("@id", item1.ID);
    c.Open();
    DateTime completedDate = Convert.ToDateTime( cmd.ExecuteScalar() );
    return completedDate;
}

使用批处理语句作为命令文本。您不需要逐字记录字符串,因为您没有使用反斜杠或双引号

DECLARE @completedDate datetime = GETDATE();
UPDATE Conversions SET CompletedDate = @completedDate, Status = 'Completed' WHERE Id = @id;
SELECT @completedDate;
不要使用
Convert.ToInt32
,只需使用
Convert.ToDateTime

Protip:使用
using
而不是手动关闭连接,因为如果
ExecuteScalar
引发异常,此时您的连接将不会关闭:

using(SqlConnection c = new SqlConnection( ... ))
using(SqlCommand cmd = c.CreateCommand()) {
    cmd.CommandText = "DECLARE @completedDate...";
    cmd.Parameters.AddWithValue("@id", item1.ID);
    c.Open();
    DateTime completedDate = Convert.ToDateTime( cmd.ExecuteScalar() );
    return completedDate;
}

使用批处理语句作为命令文本。您不需要逐字记录字符串,因为您没有使用反斜杠或双引号

DECLARE @completedDate datetime = GETDATE();
UPDATE Conversions SET CompletedDate = @completedDate, Status = 'Completed' WHERE Id = @id;
SELECT @completedDate;
不要使用
Convert.ToInt32
,只需使用
Convert.ToDateTime

Protip:使用
using
而不是手动关闭连接,因为如果
ExecuteScalar
引发异常,此时您的连接将不会关闭:

using(SqlConnection c = new SqlConnection( ... ))
using(SqlCommand cmd = c.CreateCommand()) {
    cmd.CommandText = "DECLARE @completedDate...";
    cmd.Parameters.AddWithValue("@id", item1.ID);
    c.Open();
    DateTime completedDate = Convert.ToDateTime( cmd.ExecuteScalar() );
    return completedDate;
}
您还可以使用:

您还可以使用:

您还可以使用:

您还可以使用:


为什么不将日期传递给查询呢

DateTime completeDate = DateTime.Now;

using (SqlConnection connect = new SqlConnection(connectionString))
{
    string updateQueryCompletedDate = @"UPDATE Conversions 
                                        SET CompletedDate = @CompleteDate,
                                        Status = 'Completed'
                                        WHERE ID = @ID"; 

    SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
    command1.Parameters.AddWithValue("ID", item1.ID);
    command1.Parameters.AddWithValue("CompleteDate",completeDate);

    connect.Open();
    command1.ExecuteNonQuery();
    connect.Close();
}

唯一的区别是客户端和服务器之间可能存在的时区差异。

为什么不将日期传递给查询

DateTime completeDate = DateTime.Now;

using (SqlConnection connect = new SqlConnection(connectionString))
{
    string updateQueryCompletedDate = @"UPDATE Conversions 
                                        SET CompletedDate = @CompleteDate,
                                        Status = 'Completed'
                                        WHERE ID = @ID"; 

    SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
    command1.Parameters.AddWithValue("ID", item1.ID);
    command1.Parameters.AddWithValue("CompleteDate",completeDate);

    connect.Open();
    command1.ExecuteNonQuery();
    connect.Close();
}

唯一的区别是客户端和服务器之间可能存在的时区差异。

为什么不将日期传递给查询

DateTime completeDate = DateTime.Now;

using (SqlConnection connect = new SqlConnection(connectionString))
{
    string updateQueryCompletedDate = @"UPDATE Conversions 
                                        SET CompletedDate = @CompleteDate,
                                        Status = 'Completed'
                                        WHERE ID = @ID"; 

    SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
    command1.Parameters.AddWithValue("ID", item1.ID);
    command1.Parameters.AddWithValue("CompleteDate",completeDate);

    connect.Open();
    command1.ExecuteNonQuery();
    connect.Close();
}

唯一的区别是客户端和服务器之间可能存在的时区差异。

为什么不将日期传递给查询

DateTime completeDate = DateTime.Now;

using (SqlConnection connect = new SqlConnection(connectionString))
{
    string updateQueryCompletedDate = @"UPDATE Conversions 
                                        SET CompletedDate = @CompleteDate,
                                        Status = 'Completed'
                                        WHERE ID = @ID"; 

    SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
    command1.Parameters.AddWithValue("ID", item1.ID);
    command1.Parameters.AddWithValue("CompleteDate",completeDate);

    connect.Open();
    command1.ExecuteNonQuery();
    connect.Close();
}


唯一的区别是客户端和服务器之间可能存在的时区差异。

Cleaver,+1。OP也可以使用@RubensFarias,我认为
输出实际上更干净。请将其作为一个新的答案提交:)一个更干净的选择是在过程中使用此批处理sql代码,而不是使用多个sql语句。@Rahul我不同意。我觉得不应该将存储过程用于简短或琐碎的数据库操作。您可以这样做,但我看不出通过网络发送长文本SQL查询有任何好处。Cleaver,+1。OP也可以使用@RubensFarias,我认为
输出实际上更干净。请将其作为一个新的答案提交:)一个更干净的选择是在过程中使用此批处理sql代码,而不是使用多个sql语句。@Rahul我不同意。我觉得不应该将存储过程用于简短或琐碎的数据库操作。您可以这样做,但我看不出通过网络发送长文本SQL查询有任何好处。Cleaver,+1。OP也可以使用@RubensFarias,我认为
输出实际上更干净。请将其作为一个新的答案提交:)一个更干净的选择是在过程中使用此批处理sql代码,而不是使用多个sql语句。@Rahul我不同意。我觉得不应该将存储过程用于简短或琐碎的数据库操作。您可以这样做,但我看不出通过网络发送长文本SQL查询有任何好处。Cleaver,+1。OP也可以使用@RubensFarias,我认为
输出实际上更干净。请将其作为一个新的答案提交:)一个更干净的选择是在过程中使用此批处理sql代码,而不是使用多个sql语句。@Rahul我不同意。我觉得存储过程不应该用于简短或琐碎的数据库操作。你可以,但我看不出通过网络发送长文本SQL查询有任何好处。顺便说一句,这是一个更新查询:)哈哈,哦!我错过了,顺便说一句,这是一个更新查询:)哈哈哦!我错过了,顺便说一句,这是一个更新查询:)哈哈哦!我错过了,顺便说一句,这是一个更新查询:)哈哈哦!我错过了在这种特殊情况下,不同的时区可能是一个问题在这种特殊情况下,不同的时区可能是一个问题在这种特殊情况下,不同的时区可能是一个问题在这种特殊情况下,不同的时区可能是一个问题