Я использую базу данных MySQL в производстве и базу данных SQLite для запуска тестов. Одна часть моей заявки используется для сбора ежемесячной статистики за год. Я успешно сделал это, однако он пришел по цене не в состоянии автоматизировать тесты, потому что я использую MySQL определенные функции при запросе данных:Извлечение деталей даты с использованием DBIC при сохранении запросов агностик запросов
my $criteria = {
status => ['Complete'],
'YEAR(completed_on)' => DateTime->now()->year(),
};
my $attributes = {
select => [ { count => 'title' }, 'completed_on' ],
as => [qw/num_completed datetime/],
group_by => [qw/MONTH(completed_on)/],
};
Примечание Я использую YEAR
и MONTH
MySQL функции.
Я знаю один способ, которым я могу заменить, где положение, чтобы исключить использование MySQLs YEAR
функции, что-то вроде этого:
my $dtf = $schema->storage->datetime_parser;
my $begin_date = DateTime->from_day_of_year(year => DateTime->now()->year(), day_of_year => 1); #inception o_O
my $end_date = DateTime->from_day_of_year(year => DateTime->now()->year(), day_of_year => 36[56]);
my $criteria = {
status => ['Complete'],
completed_on =>
-between => [
$dtf->format_datetime($begin_date),
$dtf->format_datetime($end_date),
]
};
Using the recommended way to query date fields using DBIC
Но я озадачен относительно того, что делать с предложение group_by
и как сделать группировку этого значения даты по месячной базе данных агностиком. Интересно, есть ли у кого-нибудь идеи?
Спасибо!
Я не думаю, нет способа сделать это? – a7omiton