代码之家  ›  专栏  ›  技术社区  ›  jstuardo

使用ODBC连接时如何在MS Access或SQL Server中使用日期数据类型

  •  0
  • jstuardo  · 技术社区  · 6 年前

    我有一个C语言的程序,它使用DSN(ODBC驱动程序)连接到数据库。

    我在程序中运行的所有查询都使用SQL。除了在查询(在select语句或where子句中)中使用datetime数据类型外,所有方法都可以很好地工作。

    当DSN是MS Access数据库时,我必须使用如下内容:

    WHERE SomeDate = #1/1/2005#
    

    但是,如果SQL Server中有相同的数据库,那么我应该使用如下内容:

    WHERE SomeDate = '1/1/2005' 
    

    有没有一种方法可以在同一个程序中管理这一点,而不必为SQL Server和另一个MS Access执行例程?

    我试图获取odbcconnection对象的属性,但找不到检测驱动程序是MS Access还是SQL Server的方法。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gustav    6 年前

    您可能使用了数据类型 日期时间2 在SQL Server中。如果使用本机 SQL服务器 ODBC驱动程序。

    所以要么:

    1. 使用Microsoft ODBC Driver 11 for SQL Server-或更新版本,17是当前版本:

    Microsoft® ODBC Driver 17 for SQL Server®

    1. 将字段的数据类型更改为 日期时间
        2
  •  0
  •   Mehdi Ibrahim    6 年前

    您可以将Access数据库设置为ANSI-92模式。这将允许您用单引号查询日期字段。

    不过,如果这是一个现有的数据库或有其他应用程序正在使用它,则需要一个警告字。这可能会对数据库中不符合ANSI标准的任何现有查询进行破坏性更改。同样,如果有其他应用程序使用此数据库,它们的查询也可能中断。

    另外,请注意 OdbcConnection 确实有 Driver 可以探测以确定数据源的属性。在我的计算机上,指向SQL Server数据库的DSN返回 sqlncli11.dll ,因为我使用的是SQL Server本机客户端11.0。可以使用此属性来驱动应用程序中查询的语法。您可以创建一个数据访问层,将其中的一些内容从其余代码中抽象出来。