.net 使用SqlCommand插入服务器日期时间

.net 使用SqlCommand插入服务器日期时间,.net,sql,sql-server,ado.net,.net,Sql,Sql Server,Ado.net,我有一个SqlCommand,它使用SqlParameter将日期时间插入到列中。目前我使用DateTime.Now作为这个参数的值 我相信这会增加用户PC上的日期时间,这是不一致的 如何更改此设置以插入数据库服务器的日期时间 编辑: 我应该说清楚这只是为了插入,而不是传递当前日期的参数;让SQL Server生成它 < P> >您所描述的是“代码> GETDATE())/>代码>,尽管您可能需要考虑使用 GutUcDATE()/,因为它将在时区更改(以及移动服务器)方面表现得更好()。 有关详

我有一个SqlCommand,它使用SqlParameter将日期时间插入到列中。目前我使用DateTime.Now作为这个参数的值

我相信这会增加用户PC上的日期时间,这是不一致的

如何更改此设置以插入数据库服务器的日期时间

编辑:


我应该说清楚这只是为了插入,而不是传递当前日期的参数;让SQL Server生成它

< P> >您所描述的是“代码> GETDATE())/>代码>,尽管您可能需要考虑使用<代码> GutUcDATE()/<代码>,因为它将在时区更改(以及移动服务器)方面表现得更好(

)。
有关详细信息,请参阅。

在这种情况下,不要将日期时间值作为参数传递。而是使用GetDate()函数并将结果插入表中

插入X(Id,Col1,Col2)值(1,'Customer1',GetDate())


希望这有帮助

这是专为插页设计的吗?还是更新

如果仅用于插入,则可以在SQL Server端的DATETIME列上声明默认约束,然后不从客户端插入值,从而使用服务器的默认值

在SQL中:

 ALTER TABLE YourTable 
   ADD CONSTRAINT DF_YourTable_YourColumn
     DEFAULT (GETDATE()) FOR YourColumn
然后在SQL命令中,不要提及“YourColumn”,也不要为其提供值-服务器将使用
getdate()
获取服务器上的当前日期/时间


Marc

您可以使用存储过程和GETDATE()

tableName(编号:int,名称:varchar(40),日期时间)

存储过程

CREATE PROCEDURE  AddRec
@no int,
@name varchar(40)
AS
insert into tableName
 values (@no,@name,getdate())
RETURN
执行存储过程的代码

CREATE PROCEDURE  AddRec
@no int,
@name varchar(40)
AS
insert into tableName
 values (@no,@name,getdate())
RETURN
SqlConnection cn=new SqlConnection("Your_Cn_Str");
SqlCommand cmd=new SqlCommand();
cmd.CommandText="AddRec";
cmd.CommandType=CommandType.StoredProcedue;
cmd.Connection=cn;

cmd.Parameters.AddWithValue("@no",10);
cmd.Parameters.AddWithValue("@name","Foo");

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();

能否将SQL Server函数指定为SQLParameter的值?如果不是的话,我认为最好的方法是使用另一个答案中建议的默认约束,我认为这是不可能的。如果您当前直接将默认约束插入到表中,那么默认约束将很好地工作-我假设这是一个更大存储过程的一部分。+1:IMHO,这是最好的解决方案。尽管如此,如果使用数据集,可以使用DateColumn.DateTimeMode使所有用户具有一致的时区设置(我假定为Utc)。请参阅:@Dave:您可以按照marc_的建议添加默认约束,也可以在SP中调用GETDATE()。在这两种情况下,您都不会将值作为参数传递给SP。@van:事实上-默认约束在任何一种情况下都有效。如果我已经有一个存储过程,我可能会保留存储过程中的逻辑和表定义之外的逻辑,但每个都有自己的逻辑。这是针对SQL 7。。。它仍然只是一本在线的书,从未更新过