我想在PHP中生成一个时间戳,然后将该值存储在SQLite中。下面是代码:$created_date = date(“YYYY-MM-DD HH:MM:SS”,time());以下是存储在DB中的内容(看起来是错误的):11/21/0020 12:39:49 PM我应该如何更改代码以在SQLite中正确存储当前日期/时间
93ze6v8z1#
为什么不直接更新SQLite查询来使用date('now')呢?reference但是,在PHP中,你应该可以使用
date('now')
$created_date = date('Y-m-d H:i:s');
lfapxunr2#
我只是为我自己的项目实现了这一点。我的解决方案是使用UTC时间格式officially specified for the web: RFC3339。您可以使用以下任何PHP时间格式常量:
DATE_RFC3339
DATE_W3C
DATE_ATOM
$sqlite_timestamp = date(DATE_RFC3339); echo "My SQLite timestamp = ".$sqlite_timestamp;
最好的部分是字母数字顺序对应于日期顺序,所以你可以在日期字段上使用ORDER BY SQL语句!
ORDER BY
cgyqldqp3#
如何检查存储值是什么?另外,数据库中列的数据类型是什么?你知道SQLite is typeless,所以所有的值都被存储为字符串或整数吗?
8oomwypt4#
$created_date = date('Y-m-d H:i:s'); echo $created_date ."<br />\n"; $created_date = date('l, F jS, Y - g:ia'); echo $created_date ."<br />\n"; $created_date = date('n/j/y H:i:s'); echo $created_date ."<br />\n"; $created_date = date('r'); // RFC 2822 formatted date echo $created_date ."<br />\n"; $created_date = date('c'); // ISO-8601 formatted date echo $created_date ."<br />\n";
输出可以是:
2011-04-01 19:33:40 Friday, April 1st, 2011 - 7:33pm 4/1/11 19:33:40 Fri, 01 Apr 2011 19:33:40 +0200 2011-04-01T19:33:40+02:00
注意date()函数依赖于PHP配置中设置的默认时区。您可以始终使用echo date_default_timezone_get();测试它,或通过date_default_timezone_set('TIMEZONE_IDENTIFIER');设置它,其中TIMEZONE_IDENTIFIER是the list of supported timezones中的一个。
echo date_default_timezone_get();
date_default_timezone_set('TIMEZONE_IDENTIFIER');
cgvd09ve5#
$db = new PDO('sqlite:database.db', null, null, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); $sql = <<<'SQL' INSERT INTO stats (timestamp, ip) VALUES (datetime('now'), :ip) SQL; $query = $db->prepare($sql); $query->execute([ ':ip' => $ip, ]);
5条答案
按热度按时间93ze6v8z1#
为什么不直接更新SQLite查询来使用
date('now')
呢?reference但是,在PHP中,你应该可以使用
lfapxunr2#
我只是为我自己的项目实现了这一点。
我的解决方案是使用UTC时间格式officially specified for the web: RFC3339。您可以使用以下任何PHP时间格式常量:
DATE_RFC3339
DATE_W3C
DATE_ATOM
示例:
最好的部分是字母数字顺序对应于日期顺序,所以你可以在日期字段上使用
ORDER BY
SQL语句!cgyqldqp3#
如何检查存储值是什么?另外,数据库中列的数据类型是什么?你知道SQLite is typeless,所以所有的值都被存储为字符串或整数吗?
8oomwypt4#
输出可以是:
注意date()函数依赖于PHP配置中设置的默认时区。您可以始终使用
echo date_default_timezone_get();
测试它,或通过date_default_timezone_set('TIMEZONE_IDENTIFIER');
设置它,其中TIMEZONE_IDENTIFIER是the list of supported timezones中的一个。cgvd09ve5#