当前位置: 首页 > MySQL数据库

PGSQL怎么查询最近N天的数据及SQL语句实现替换字段内容的方法

时间:2026-01-26 14:20:57
1、用SQL查询最近N天的数据

思路:先获取当前的时间,然后更具当前时间去减去对应的天数,就可以得到需要的天数了。然后用这些天数作为条件,然后即可查询出需要多少天的数据了。

--获取当前时间SELECTCURRENT_TIMESTAMP;--或SELECTnow();selectCURRENT_TIMESTAMP::DATEAS"当前日期";SELECTCURRENT_DATE;selectCURRENT_TIMESTAMP::TIMEAS"当前时间";SELECTCURRENT_TIME;

最近N天

--最近7天SELECTDATE(T)ASDAYFROMgenerate_series((CURRENT_TIMESTAMP-INTERVAL'6day')::DATE,CURRENT_TIMESTAMP::DATE,'1days')AST;

当然6 day、1 day这些也是可修改的;

--统计最近30、7、昨天、今天的数据SELECTcount(*)ASAllData,count(*)filter(WHEREcreate_timeBETWEEN(SELECTCURRENT_DATE-INTERVAL'30day')ANDCURRENT_DATE)ASLast30DayData,count(*)filter(WHEREcreate_timeBETWEEN(SELECTCURRENT_DATE-INTERVAL'7day')ANDCURRENT_DATE)ASLast7DayData,count(*)filter(WHEREcreate_timeBETWEEN(SELECTCURRENT_DATE-INTERVAL'1day')ANDCURRENT_DATE)ASYesterdayData,count(*)filter(WHEREcreate_time>=CURRENT_DATE)AStodayAddDataFROMtable_name;

实例如下:查询lic_plate字段不为空和为空的最近7天的数据

--查询lic_plate字段不为空的最近7天的数据selectcount(tn.lic_plate)ASnumber,tn.create_timeASpercentagefromtable_nametnwheretn.create_timein(SELECTDATE(T)ASDAYFROMgenerate_series((CURRENT_TIMESTAMP-INTERVAL'6day')::DATE,CURRENT_TIMESTAMP::DATE,'1days')AST)ANDlic_plateisnotnullgroupbytn.create_timeorderbytn.create_time;--查询lic_plate字段为空的最近7天的数据selectcount(id)ASnumber,CSQV.create_timeASpercentagefrom(select*fromtable_nametnwherelic_plateisnull)ASCSQVwhereCSQV.create_timein(SELECTDATE(T)ASDAYFROMgenerate_series((CURRENT_TIMESTAMP-INTERVAL'6day')::DATE,CURRENT_TIMESTAMP::DATE,'1days')AST)groupbyCSQV.create_time;
2、用SQL语句实现替换字段里的内容

思路:使用替换函数替换即可

--替换语句update表名set替换字段名=replace(替换字段名,'被替换内容','替换内容');

实例如下:将 my_test 表的 test_content字段内容进行替换

updatemy_testsettest_content=replace(test_content,'1','18');

替换函数:如果没有可以创建,创建函数如下:

--replacealloccurrencesinstringofold_substrwithnew_substr--auto-generateddefinitioncreatefunctionreplace(text,text,text)returnstextimmutablestrictcost1languageinternalas$$begin--missingsourcecodeend;$$;commentonfunctionreplace(text,text,text)is'replacealloccurrencesinstringofold_substrwithnew_substr';
3、SQL将查询结果赋值
--查询表数据,给test_content字段并赋值selecttest_id,test_code,'测试数据'test_contentfrommy_test;--查询表数据给自定义ABCD字段并赋值selecttest_id,test_code,'测试数据'ABCDfrommy_test;
4、SQL查询字段内容为 NULL值时候赋值
selecttest_id,test_code,COALESCE(test_content,'测试数据')ABCDfrommy_test;--||selecttest_id,test_code,CASEWHENtest_contentISNOTNULLTHENtest_contentELSE'测试数据'ENDABCDfrommy_test;

上一篇:MySQL8.0.32的安装与配置的方法是什么
下一篇:SQL Server如何创建数据库
pgsql sql
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素