简体   繁体   English

如何在ODBC中为MS Access转换SQL查询

[英]How to convert sql query for MS Access in ODBC

Here is table images which is given below 这是下面给出的表格图像

在此处输入图片说明在此处输入图片说明

My Query is give below, 我的查询如下

$DB2->query("SELECT CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE CHECKTIME BETWEEN '$start_date' AND '$tommorow' AND USERINFO.CardNo <> NULL") $ DB2-> query(“ SELECT CHECKINOUT.USERID,USERINFO.CardNo from CHECKINOUT内部加入CHECKKINOUT.USERID上的USERINFO = USERINFO.USERID在'$ start_date'和'$ tommorow'和USERINFO.CardNo <> NULL之间检查的时间)

I want to do query in ODBC Like below 我想在ODBC中进行查询,如下所示

$DB2->query("SELECT CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE format(CHECKTIME, 'dd/mm/yyyy') BETWEEN '$start_date' AND '$tommorow' AND USERINFO.CardNo <> NULL") $ DB2-> query(“ SELECT CHECKINOUT.USERID,USERINFO.CardNo来自CHECKINOUT内部联接USERINFO ON CHECKINOUT.USERID = USERINFO.USERID格式(CHECKTIME,'dd / mm / yyyy')在'$ start_date'和'$ tommorow之间'AND USERINFO.CardNo <> NULL“)

But The Query for ODBC it is not work perfectly, it has come all date data with date difference data. 但是ODBC查询并不是完美的,它包含了所有日期数据和日期差数据。

How to make perfect query in ODBC FOR MS ACCESS Database. 如何在ODBC FOR MS ACCESS数据库中进行完美查询。

Please give me any solution. 请给我任何解决方案。

    SELECT CHECKINOUT.USERID,USERINFO.CardNo FROM CHECKINOUT
    INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
    WHERE CHECKTIME
    BETWEEN #$start_date# AND #$tommorow# AND USERINFO.CardNo <> NULL

I see from your screen images that CHECKTIME is a datetime data type. 从您的屏幕图像中我看到CHECKTIME是日期时间数据类型。 If you are sending the query to MS-Access, the dates must be surrounded by pounds signs (#) and not single quotes. 如果要将查询发送到MS-Access,则日期必须用井号(#)而不是单引号引起来。 You don't need to format them as string, the default for using a date will be midnight (00:00) unless you specify otherwise. 您无需将其格式化为字符串,除非另外指定,否则使用日期的默认值为午夜(00:00)。

The best solution is to paste this query into the MS-Access query designer and make sure it gives you the results you expect. 最好的解决方案是将该查询粘贴到MS-Access查询设计器中,并确保它可以为您提供预期的结果。 Failing that, create the query in the MS-Access designer and look at the SQL it returns for format. 如果失败,请在MS-Access设计器中创建查询,然后查看它返回的SQL格式。

Note if you say between startdate and tomorrow that would between, for example 6-May-2014 at 00:00 through 7-May-2014 at 00:00. 请注意,如果您说要在开始日期和明天之间进行设置,例如在2014年5月6日00:00到2014年5月7日00:00之间。 So it depends what you mean by "tomorrow" (beginning of the day or end of the day). 因此,这取决于您所说的“明天”(一天的开始或一天的结束)的含义。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM