gpt4 book ai didi

mysql - Perl 和 MYSQL - 选择年-月-日小时 :minute:seconds (unix? ) 样式时间戳之间的数据

转载 作者:行者123 更新时间:2023-11-29 08:35:44 25 4
gpt4 key购买 nike

我一整天都在寻找答案,也尝试了我所有的想法。我所做的事情看似简单,但对我来说非常困难。我必须在不安装额外 Perl 模块的情况下执行此操作。

我正在尝试选择在两个日期之间输入的姓名列表。我知道这些例子显然不严格或不安全,但我只是想弄清楚。一旦我找到了实现所需结果的方法,我将解决所有这些问题。

$to 和 $from 的传入数据示例:

$to= '2013-03-01 00:00:01';
$from= '2013-03-01 23:23:59';

数据库中输入的列也采用这种格式。

我尝试过:

$names = DBI->connect("$sdb","$user","$password");
$getnames = $names->prepare(qq{SELECT DISTINCT `name`
FROM `users`
WHERE `entered`
BETWEEN UNIX_TIMESTAMP($from)
AND UNIX_TIMESTAMP($to)
AND `active` = ?
AND `confirmed` = ?
ORDER BY `entered` DESC});
$getnames->execute($active,$confirmed);

我尝试过:

    $names = DBI->connect("$sdb","$user","$password");
$getnames = $names->prepare(qq{SELECT DISTINCT `name`
FROM `users`
WHERE `entered` BETWEEN ?
AND ?
AND `active` = ?
AND `confirmed` = ?
ORDER BY `entered` DESC});
$getnames->execute($from,$to,$active,$confirmed);

我也尝试了上述两种方法的许多变体,但是,我不断得到:

Can't call method "prepare" on an undefined value at users-by-date.pl line 120 even when I hard code the variables.

有人可以告诉我该怎么做吗?我的查询在 phpmyadmin 中执行得很好,但是我需要使用 Perl 将结果打印到页面上。我相信这与日期格式有关。不,我无法更改数据库中的日期格式。

非常感谢。

最佳答案

$names = DBI->connect("$sdb","$user","$password");

应该是

$names = DBI->connect($sdb, $user, $password) or die "Couldn't connect to database: $!";

添加or die...部分有两个目的:

1) 它会立即停止你的程序,防止你稍后尝试使用数据库句柄时出现虚假错误,而真正的问题是它无法连接到数据库。

2) 它会告诉您数据库连接失败的原因。 (数据库的错误消息将在 $! 中。)

我还删除了变量周围的双引号,因为不需要它们。

关于mysql - Perl 和 MYSQL - 选择年-月-日小时 :minute:seconds (unix? ) 样式时间戳之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com