C# 如何以编程方式在MySql中捕获时间戳?

C# 如何以编程方式在MySql中捕获时间戳?,c#,mysql,C#,Mysql,我是MySQL和数据库的新手,如果这是一个新手问题,我很抱歉。我正在创建一个带有users表的MySQL数据库。其中一列是UserAccept,另一列是UserAcceptWhen。当他们登录到使用C#构建的程序时,他们必须首先接受用户协议。如果他们单击Accept,然后进入,但问题是更新表。单击“接受”后,UserAccept将从0更改为1,但如何让UserAcceptWhen更新当前日期和时间?另外,我是否可以锁定该列不更改,除非UserAccept列更改?MySQL中有一个名为NOW()的

我是MySQL和数据库的新手,如果这是一个新手问题,我很抱歉。我正在创建一个带有users表的MySQL数据库。其中一列是
UserAccept
,另一列是
UserAcceptWhen
。当他们登录到使用C#构建的程序时,他们必须首先接受用户协议。如果他们单击Accept,然后进入,但问题是更新表。单击“接受”后,
UserAccept
将从0更改为1,但如何让
UserAcceptWhen
更新当前日期和时间?另外,我是否可以锁定该列不更改,除非
UserAccept
列更改?

MySQL中有一个名为
NOW()
的强大函数,它返回时间和日期

UPDATE table SET UserAcceptWhen = NOW() WHERE id = 1;

正如@Matt Clark所说,您可以使用MySQL NOW()函数来存储当前时间值。 一个小附录是考虑在用户接受更改时使用触发器更新用户接受。 大概是这样的:

DELIMITER //
CREATE TRIGGER UserAcceptedNOW BEFORE UPDATE ON user
FOR EACH ROW
  BEGIN
    IF (NEW.UserAccepted = 1) THEN
      SET NEW.UserAcceptedWhen = NOW();
    END IF;  
  END
//
不要忘记将UserAcceptWhen设置为时间戳类型

对于第二个问题:好吧,您不能为更改而锁定列

通常,最好在db之外使用逻辑(转储db会更容易),但这也是一种解决方案