如何使用sql语句提取时间含有年月日时的数据,以当前天往前推30天数据

如何使用sql语句提取时间含有年月日时的数据,以当前天往前推30天数据

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/738856
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:连接达梦数据库后经常发生掉线、断开数据库连接问题,指定类别达梦SQL语句报语法错误等
  • 除此之外, 这篇博客: SQL 求解连续问题(相邻问题)中的 4.最后一次登陆日期的登陆顺序减去最后一次的前一次的登陆日期的登陆顺序即为连续登陆的天数  部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • select *,
    每个月每个日期的登陆顺序-coalesce(lag(每个月每个日期的登陆顺序,1)  over (partition by month(online_date),user_id order by '每个月每个日期的登陆顺序'),0) as '连续登陆天数'
     from(
        select *,lead(online_date,1,'当月最后登陆日期') over (partition by month(online_date), user_id order by online_date) as 当月下一次登陆日期
        from (
            select *,month(online_date) as 月,row_number() over (partition by month(online_date), user_id order by online_date) as 每个月每个日期的登陆顺序
            from user_online_record
            ) as t1
        ) as t2
    where date_sub(当月下一次登陆日期,interval 1 day) <> online_date or 当月下一次登陆日期='当月最后登陆日期';
    

直接根据日期,往前计算30天就行了,下边是查询30天之前的当前时间

mysql   SELECT DATE_SUB(NOW(), INTERVAL 30 DAY);
oracle  select sysdate-30 from dual;

img

Sql = "select 销售日期,门店,实际分类,品类,条码号,款式,款号,子名称, 数量,重量,手寸 from [sheet$] where DATE(销售日期) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)"
Sheet11.Cells.Clear
Sheet11.Range("a1").CopyFromRecordset 销售表.Execute(Sql)

img


好像这句有问题where DATE(销售日期) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)",没有where后面的语句一切正常