在 MS-Access 中插入带日期时间的 SQL 命令

Posted

技术标签:

【中文标题】在 MS-Access 中插入带日期时间的 SQL 命令【英文标题】:Insert SQL command with Datetime in MS-Access 【发布时间】:2009-04-21 09:48:00 【问题描述】:

我正在 MS-Access 2007 中尝试以下查询,但在时间字段中失败。

INSERT INTO LOG (
    EMPLOYEECODE, STATUSID, LOCATIONID, TIME, DURATION,
    SHIFTID, LATECOMING, EARLYGOING, LOGDATE, STATIONID
)
VALUES (
    1, 1, 0, '4/21/2009 2:25:53 PM', 0, 
    8, 0, 1, '1/1/2009', 1
)

TIME 字段定义为日期时间。

没有TIME 字段,查询工作正常!

我尝试了许多不同的方法,例如将日期时间括在散列、引号等中。但是,时间字段上的查询仍然失败。


谢谢你们!这几乎让我完全在那里。我仍然不断收到插入语句的语法错误,但在进一步谷歌搜索时,我意识到TIME 可能是一个保留关键字,所以将它放在方括号中,因为[TIME] 有效!

【问题讨论】:

【参考方案1】:

访问中的日期和时间输入使用#,因为访问不能在SQL查询(或访问称为查询)中从字符/文本自动转换为日期或时间,你最好使用YYYY-MM-DD HH:NN:SS(4位年,2位月,2位日,2位小时,2位分钟)输入日期时间的国际标准, 2 位秒)

所以对于 4/21/2009 2:25:53 PM 使用 #2009-04-21 14:25:53#

或者如果仍然失败,您可以使用 #'2009-04-21 14:25:53'#

编辑:如果您启用 ANSI 92 或使用 ADO/OLEDB 作为数据库接口,上述方法可能有效,感谢 David 指出

我建议你使用 YYYY-MM-DD HH:NN:SS 格式并在使用之前用单引号 (') 尝试一下 # 就像我上面说的那样

【讨论】:

单引号内的 FWIW ISO 日期格式对我来说总是有效的。 您使用的是什么数据库接口? ADO/OLEDB?如果是这样,那将是正确的。如果您在 Access 中工作,除非您已将选项设置为默认使用 ANSI 92。 @David:是的,通常我使用 ADO/OLEDB,但它也适用于 Access Query(也许我已经使用 ANSI 92 设置它???) 是的,我(几乎)总是使用 OLE DB,并且总是将 Access UI 设置为 ANSI-92 查询模式。 谢谢你!终于明白access是如何存储DATE对象了

以上是关于在 MS-Access 中插入带日期时间的 SQL 命令的主要内容,如果未能解决你的问题,请参考以下文章

在 ms-access 表中插入多行的 SQL 代码

经典 ASP 和 ms-access:插入数据的问题

SQL/ms-access 中的条件仅考虑月份中的某一天,而不是完整日期

MS-Access:选择每个会计月的开始日期和日期

从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据

如何在 Oracle 中插入带小数秒的日期和时间?