访问 mdb 中的 PHP 和日期格式

Posted

技术标签:

【中文标题】访问 mdb 中的 PHP 和日期格式【英文标题】:PHP and date formatting in access mdb 【发布时间】:2013-09-02 23:13:31 【问题描述】:

我正在使用 php 将数据插入 MS Access DB (*.mdb)。 CreateDate 字段的类型为日期/时间,并且插入的数据格式错误。这是我的查询:

$date = date('d/m/Y');
$dbh = new PDO("odbc:Driver=Microsoft Access Driver (*.mdb); Dbq="mydb.mdb"; Uid=Admin");     
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec("INSERT INTO Cup_Package (Cup_BorgPartnerID, Name, CreateDate)           VALUES (1, 'Catalog and Price Update', $date)");

但不是写像 2/9/2013 这样的日期,而是日期字段得到 30/12/1899,这可能意味着我提供的格式不正确或者日期字段根本没有数据。有什么想法吗?

【问题讨论】:

【参考方案1】:

在 Access 中,日期文字必须包含在 # 中,并且格式如下:

#MM/DD/YYYY#

或者,对于日期和时间:

#MM/DD/YYYY HH:MM:SS#

Access 还接受作为十进制数字的日期文字,其中整数部分是天数,小数部分是一天的小数部分。

在你的情况下:

$date = date('m/d/Y');
$dbh->exec("INSERT INTO Cup_Package (Cup_BorgPartnerID, Name, CreateDate) 
           VALUES (1, 'Catalog and Price Update', #$date#)");

【讨论】:

但是$date'd/m/Y'格式的字符串。无论语言环境如何,数据库引擎都需要 'm/d/Y' 格式的日期文字,或 Y-m-d @HansUp:很好,我没有对现有的格式字符串给予足够的重视,我认为没问题,只有# 丢失了。谢谢!

以上是关于访问 mdb 中的 PHP 和日期格式的主要内容,如果未能解决你的问题,请参考以下文章

php Laravel mutator和日期格式的访问器

使用 php 在两个日期之间选择 ms 访问

PHP 中的 RFC1123 和 RFC2822 日期时间格式有啥区别?

PHP日期格式怎么转换

学习PHP中的国际化日期格式化操作

如何从现有格式转换php中的日期格式[重复]