如何在PHP中创建SQLite Timestamp值

eagi6jfj  于 2023-06-23  发布在  SQLite
关注(0)|答案(5)|浏览(135)

我想在PHP中生成一个时间戳,然后将该值存储在SQLite中。
下面是代码:
$created_date = date(“YYYY-MM-DD HH:MM:SS”,time());
以下是存储在DB中的内容(看起来是错误的):11/21/0020 12:39:49 PM
我应该如何更改代码以在SQLite中正确存储当前日期/时间

93ze6v8z

93ze6v8z1#

为什么不直接更新SQLite查询来使用date('now')呢?reference
但是,在PHP中,你应该可以使用

$created_date = date('Y-m-d H:i:s');
lfapxunr

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语句!

cgyqldqp

cgyqldqp3#

如何检查存储值是什么?另外,数据库中列的数据类型是什么?你知道SQLite is typeless,所以所有的值都被存储为字符串或整数吗?

8oomwypt

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中的一个。

cgvd09ve

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,
]);

相关问题