如何在c#中为timestamp数据类型分配默认值?

时间:2009-03-23 11:06:08

标签: c# .net sql linq linq-to-sql

我想在c#?

中为timestamp数据类型指定默认值

我在c#中有一个表对象。

4 个答案:

答案 0 :(得分:2)

SQL TimeStamp基于sql server上的插入/更新顺序。无法从C#中分配它。我怀疑SQL甚至会允许你更新TimeStamp类型的列。

TimeStamp是二进制序列。 (我相信8个字节。)与DateTime没有关联。在页面上无法显示给用户。

如果要在上次修改或首次创建记录时显示用户,则必须维护DateTime类型的单独字段,并使用sprocs或触发器更新应用程序或sql中的值。

答案 1 :(得分:1)

根据documentation,Transact-SQL 时间戳数据类型只是一个递增的数字,不会保留日期或时间。您无法将其转换为有意义的DateTime值。

文档说它是一个8字节的值。因此,如果它存储在System.Data.Linq.Binary中,您可以使用以下代码将其转换为long

System.Data.Linq.Binary timestampValue;
// Somehow get a reference to the SQL timestamp you're interested in

// Use BitConverter to convert the 8 bytes to a long
long timestampLong = BitConverter.ToInt64(timestampValue.ToArray(), 0);

您可以尝试通过调用带有DateTime值的构造函数将该值转换为ticks,但结果将毫无意义。如果ticks值超出范围,您可能还会遇到异常。

答案 2 :(得分:0)

对于DateTime对象,只需使用

var d = new DateTime();

答案 3 :(得分:0)

DateTime d = new DateTime(2009,3,23);

msdn