【问题标题】:Get current date and time, using c# for ms access获取当前日期和时间,使用 c# 进行 ms 访问
【发布时间】:2016-06-12 16:04:34
【问题描述】:

我只能找出如何获取当前日期,而不是当前日期和时间的组合。我还没有找到任何合适的解决方案。

  cmd.CommandText = "INSERT INTO [Table] (DATE) VALUES (@date)";

 var pDate = new OleDbParameter("@date", SqlDbType.DateTimeOffset);
            pDate.Value = DateTime.Now.Date; 
            cmd.Parameters.Add(pDate);

任何帮助将不胜感激。

编辑:也试过了:

var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;

但我仍然只收到日期“2016 年 6 月 12 日”,而不是时间。

【问题讨论】:

  • 好吧,DateTime.Now 为您提供当前日期和时间 - 如果您不想要日期部分,为什么还要使用 Date 属性? DATE 字段的类型是什么?
  • @MattRowland:我认为这个问题是在问这个问题的反面。
  • @JonSkeet 啊,我现在明白了。
  • @JonSkeet 我收到“标准表达式中的数据类型不匹配”。如果我只使用DateTime.Now。顺便说一句,您的意思是在数据库中的DATE-field 中?现在是日期/时间。
  • @Nyprez:如果类型是日期/时间,你为什么使用SqlDbType.DateTimeOffset?为什么要使用SqlDbType 来代替OleDbParameter?听起来你想要OleDbType.DBTimeStamp

标签: c# sql ms-access


【解决方案1】:

Access SQL 支持名为Now() 的函数,该函数返回当前日期和时间。

因此,让 db 引擎使用 Now() 而不是在 c# 中导出等效值然后将该值作为参数提供给您的 INSERT 会更简单。

cmd.CommandText = "INSERT INTO [Table] ([DATE]) VALUES (Now())";

注意DateJet reserved word。将该名称括在INSERT 中的方括号中,以向数据库引擎发出信号,您的意思是对象名称而不是Date() 函数。

【讨论】:

  • 谢谢!像魅力一样工作。
【解决方案2】:

尝试使用 Access 已知的数据类型:

cmd.CommandText = "INSERT INTO [Table] (DATE) VALUES (@date)";

var pDate = new OleDbParameter("@date", SqlDbType.DateTime);
            pDate.Value = DateTime.Now; 
            cmd.Parameters.Add(pDate);

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2012-12-04
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多