SELECT  
  UserName
 ,GMTDate
 ,Sum(FlowCount) as FlowCount
 ,[Type]
  FROM [LOGSERVER].[dbo].[CDNHTTP]
  where DATEDIFF(month,[GMTDate],GETDATE())=2 // 改变这可以得到 某个月数据 
  group by [UserName] ,[GMTDate],[Type]
  order by [GMTDate]这是MS SQL 已经实现的功能,现在改成mySQL 要怎么做?查了下 mySQL 有 DATEDIFF 但返回时天没有参数 ,DATE_SUB 好像也不行,不知道怎么弄

解决方案 »

  1.   

    大概是这么一个MSSQL表CREATE TABLE [dbo].[CDNHTTP](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](50) NULL,
    [GMTDate] [datetime2](7) NULL,
    [FlowCount] [float] NULL,
    [Type] [varchar](255) NULL,
    PRIMARY KEY CLUSTERED 
    (
    [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]GOSET ANSI_PADDING OFF
    GO
    记录有   时间、站点、流量使用、使用协议,统计每个站点 各月份流量使用情况,当月的显示当天截止日期如:需要统计上个月 各个站点每天 流量情况,MS SQL 如下  SELECT  
      UserName
     ,GMTDate
     ,Sum(FlowCount) as FlowCount
     ,[Type]
      FROM [LOGSERVER].[dbo].[CDNHTTP]
      where DATEDIFF(month,[GMTDate],GETDATE())=1
     
      group by [UserName] ,[GMTDate],[Type]
      order by [GMTDate]
    本月情况 只需改参数   where DATEDIFF(month,[GMTDate],GETDATE())=[color=#FF0000]0[/color]以此类推,那么mySQL 该如何 查询这个。谢谢了 第一次用mySQL
      

  2.   

    MS SQL是这样的 
    mySQL 这样好像不行
      

  3.   

    MYSQL datediff这样用
    DATEDIFF(CURDATE(),[GMTDate])=2
      

  4.   

    SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
     mysql 用这个返回天数。
      

  5.   


    这只能查某一天的吧  DATEDIFF 在msSQL 里边有三个参数 DATEDIFF(datepart,startdate,enddate)第一个就是 是按 什么时间间隔 查 对应 mySQL  TimeDiff 是   hh
    DATEDIFF是  day现在要参数是 月 ?mySQL怎么处理?对应哪个函数?需要自己算 该月天数 然后用  DATEDIFF吗?
      

  6.   


    取月份用日期格式函数date_format
     date_format(GMTDate,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 2 MONTH),'%Y-%m') 
      

  7.   


    改变哪个 data_SUB 参数值就可以了,查询本月 上月 N月前的
      

  8.   


    取月份用日期格式函数date_format
     date_format(GMTDate,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 2 MONTH),'%Y-%m') 
    非常感谢这个确实是我想要的,上面那个只能取出本月和 上几个月总和谢谢了