【问题标题】:How to assign default value to timestamp datatype in c#?如何在 C# 中为时间戳数据类型分配默认值?
【发布时间】:2009-03-23 11:06:08
【问题描述】:

我想在 c# 中为时间戳数据类型分配默认值?

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

【问题讨论】:

  • 你的问题很混乱。 SQL 时间戳中的时间戳?
  • yes Datetime 是不同的数据类型。但我在 sql 数据库中使用时间戳。
  • 对任何问题做一些详细说明

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


【解决方案1】:

SQL 时间戳基于您的 sql 服务器上的插入/更新顺序。无法从 C# 中分配它。我怀疑 SQL 甚至允许您更新 TimeStamp 类型的列。

TimeStamp 是一个二进制序列。 (我相信 8 个字节。)与 DateTime 没有相关性。页面上没有任何内容可供用户显示。

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

【讨论】:

  • 时间戳需要 System.Data.Linq.Binary 类型的值。那么我们如何转换 System.DateTime.Now。我不想更新,因为它将由 sql 自动完成(我认为)。我想一定有办法,因为这是一件简单的事情。
  • 时间戳不包含日期时间信息。没有转化。
  • 非常感谢您为我提供正确的信息。抱歉回复晚了!
【解决方案2】:

根据documentation,Transact-SQL timestamp 数据类型只是一个递增数字,不保留日期或时间。您无法将其转换为有意义的 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);

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

【讨论】:

    【解决方案3】:

    对于 DateTime 对象,只需使用

    var d = new DateTime();
    

    【讨论】:

    • 其实不是datetime而是sql中的Timestamp。
    【解决方案4】:

    日期时间 d = new DateTime(2009,3,23);

    msdn

    【讨论】:

    • sql 中使用的时间戳数据类型,我想在 c# 代码或其他任何东西中为其赋值...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多