Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL视图显示12个月和按年份的间隔_Mysql_Sql_Sql View - Fatal编程技术网

Mysql SQL视图显示12个月和按年份的间隔

Mysql SQL视图显示12个月和按年份的间隔,mysql,sql,sql-view,Mysql,Sql,Sql View,现在,另一个程序员编写了这个视图来显示6个月的间隔。我如何写这篇文章,以便它显示12个月的时间间隔,按月份分组,但仅限于2011年 我想把它复制成一个单独的视图,每个月分为12个月,但仅限于2012年 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `vw_dash_bymonth`AS select month(from_unixtime(`tbl_services`.`datetime`)

现在,另一个程序员编写了这个视图来显示6个月的间隔。我如何写这篇文章,以便它显示12个月的时间间隔,按月份分组,但仅限于2011年

我想把它复制成一个单独的视图,每个月分为12个月,但仅限于2012年

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` 
SQL SECURITY DEFINER VIEW `vw_dash_bymonth`AS
select 
  month(from_unixtime(`tbl_services`.`datetime`)) AS` month1`,
  date_format(from_unixtime(`tbl_services`.`datetime`),'%Y') AS` year1`,
  date_format(from_unixtime(`tbl_services`.`datetime`),'%d') AS `day1`,
 `tbl_services`.`datetime` AS `realdate`,sum(`tbl_services`.`gallons`) AS `gallons`,
 count(0) AS `service`,
 round(avg(`tbl_services`.`gallons`),1) AS `average`
from `tbl_services`
where (from_unixtime(`tbl_services`.`datetime`) > (now() - interval 6 month))
group by month(from_unixtime(`tbl_services`.`datetime`))

如果你看where子句

where (from_unixtime(`tbl_services`.`datetime`) > (now() - interval 6 month))
我相信这是从6个月前到今天所有事情的日期。如果你想在2011年有12个月的时间,我想你可以用以下内容来取代这一行:

where (from_unixtime(`tbl_services`.`datetime`) >= DATE('2011-01-01 00:00:00')) 
  AND (from_unixtime(`tbl_services`.`datetime`) < DATE('2012-01-01 00:00:00'))
虽然我不知道MySQL,但只知道SQLServer,所以如果这不起作用,希望其他人能告诉我哪里出了问题

可以简化为:

where (from_unixtime(`tbl_services`.`datetime`) >= '2011-01-01') 
  AND (from_unixtime(`tbl_services`.`datetime`) < '2012-01-01')

它提到哪里/什么部分了吗?当我插入时,它说在group by monthfrom_Unixtimebl_services.DATETIME上的下一行有语法错误。好吧,我猜这可能是因为我使用了日期而不是日期时间,我将研究从_unixtime返回的内容。目前,你能尝试用DATETIME替换日期吗?没有DATETIME在圆括号DATETIME的2011-01-01上给我一个错误好的,这可能是一个长括号,但尝试用from_unixtimeUNIX_时间戳替换日期
SELECT
    MONTH( UNIX_TIMESTAMP( t.`datetime`) ) AS month1,
    DATE_FORMAT( UNIX_TIMESTAMP( t.`datetime`), '%Y' ) AS year1,
    DATE_FORMAT( UNIX_TIMESTAMP( t.`datetime`), '%d') AS day1,
    t.`datetime` AS realdate,
    SUM(t.gallons) AS gallons,
    COUNT(*) AS `service`,
    ROUND( AVG( t.gallons ), 1 ) AS `average`
FROM 
      tbl_services AS t
  CROSS JOIN
      ( SELECT 2011 AS YearToCheck
      ) AS c
WHERE t.`datetime` >= UNIX_TIMESTAMP( MAKEDATE( YearToCheck, 1 ) )
  AND t.`datetime` < UNIX_TIMESTAMP( MAKEDATE( YearToCheck+1, 1 ) )
GROUP BY MONTH( FROM_UNIXTIME( t.`datetime` ) )
SELECT DISTINCT FROM_UNIXTIME('date','%m-%Y') AS month,
COUNT(`id`) AS count
FROM 'blog'
GROUP BY month
ORDER BY month DESC LIMIT 0,12