常用代码(数据库)

-- mysql 格式化时间
DATE_FORMAT(t.oldstarttime ,'%Y-%c-%d %h:%i:%s')
DATE_FORMAT(t.oldstarttime ,'%h:%i:%s')
DATE_FORMAT(t.oldstarttime ,'%Y-%c-%d')
DATE_FORMAT(t.oldstarttime ,'%h:%i')

 

-- NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
-- CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
-- CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

 

--分批删或修改

while 1=1
begin
delete top (5000) from t_ibe_loginfo;
if @@ROWCOUNT <5000 break;
end
go

 

-- 当前时间的前一天
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);

 

-- mysql查询数据每行前添加序列
SELECT @rowno:=@rowno+1 AS rowno,CODE,NAME FROM t_aircom t,(SELECT @rowno:=0) _tmp;

 

-- varchar转int
cast(列名 as int)

-- varchar转int
convert(int,列名);

 

-- mssql分页
-- 2 是页数,下标
-- 10是每页大小
-- 注意第一行从1开始,因为用的num是物理行数字不是索引
select t.id from (
    select ROW_NUMBER()over(order by o.creattime asc) as num,* from t_jd_create_order o with(nolock) where 1=1
    and o.creattime >='2018-06-01'
) as t where num between 1+(2*10) and 2*10+10

 

-- 数据按时间段分组 5分钟一组
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,createtime),120),dateadd(ss,-1,createtime))/5)*5,convert(varchar(10),createtime,120)) as 时间段,  
       count(*) as 行数  
from t_policy_sp with(nolock) where state!='N' and createtime>='2018-06-08'  
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,createtime),120),dateadd(ss,-1,createtime))/5)*5,convert(varchar(10),createtime,120))  
order by 时间段
-- 基本函数使用到的sql
select 
    SUBSTRING(bookPsgs,CHARINDEX(':',bookPsgs)+1,LEN(bookPsgs)-CHARINDEX(':',bookPsgs)+1) as psgs
       ,ROW_NUMBER() over (order by creattime asc) as num
      from t_jd_create_order 
      where 1=1 
      and bookPsgs like #{bookFoals}+'%' 
      and paystate ='1';

 

-- 一列的值去重合并
select( 
select 
CAST(sharefnos.shareflightno1 as varchar)+',' 
from 
(
    select _tmp.shareflightno1 from t_set_shareflightno as _tmp where startcity='CTU' and endcity='XMN' and carrier='MF' group by shareflightno1) sharefnos 
    for xml path('')
) as sharefno

 

-- stuff('a',1,1,'b') a源字符串,第一个位置开始(不是下标),删除1位字符,用b字符串代替,得到b
-- 这里主要是去掉一开始的逗号拼接符
-- select ','+case(col as varhcar) from table for xml path('')拼接多列值成字符串
-- 这个sql的意义,按共享航司分组,并拼接各个共享航司所对应的共享航班号,用逗号拼接    
select 
a.marketcarrier sharecarrier
,STUFF
(
    (
        select 
        ',' + CAST(_tmp.shareflightno1 as varchar(300))
        from t_set_shareflightno as _tmp with(nolock)
        where 1=1
        and _tmp.state!='N'
        and _tmp.startcity='CTU'
        and _tmp.endcity='XMN'
        and _tmp.carrier='MF'
        and _tmp.marketcarrier = a.marketcarrier
        FOR XML PATH('')
    )
    ,1
    ,1
    ,''
)AS sharefnos
from t_set_shareflightno as a with(nolock)
where 1=1
and a.state!='N'
and a.startcity='CTU'
and a.endcity='XMN'
and a.carrier='MF'
group by a.marketcarrier
order by a.marketcarrier

 

--共享航班表,按共享航司分组,显示航线和共享航班号拼接
select distinct
    m.startcity
    ,m.endcity
    ,m.carrier
    ,m.marketcarrier
    ,(
        select 
        distinct
        _a.sharefnos
         from
        (
            select 
            a.startcity as startcity
            ,a.endcity as endcity
            ,a.carrier as carrier
            ,a.marketcarrier as sharecarrier
            ,STUFF
            (
                (
                    select 
                    ',' + CAST(_tmp.shareflightno1 as varchar(300))
                    from t_set_shareflightno as _tmp with(nolock)
                    where 1=1
                    and _tmp.state=a.state
                    and _tmp.startcity=a.startcity
                    and _tmp.endcity=a.endcity
                    and _tmp.carrier=a.carrier
                    and _tmp.marketcarrier = a.marketcarrier
                    --and _tmp.marketcarrier in('')
                    --and _tmp.marketcarrier not in('')
                    FOR XML PATH('')
                )
                ,1
                ,1
                ,''
            )AS sharefnos
            ,ROW_NUMBER()
            over(partition by a.marketcarrier order by a.marketcarrier asc) as p
            from t_set_shareflightno as a with(nolock)
            where 1=1
            and a.state=m.state
            and a.carrier=m.carrier
            and a.startcity=m.startcity
            and a.endcity=m.endcity
            and a.marketcarrier = m.marketcarrier
            --and a.marketcarrier in('')
            --and a.marketcarrier not in('')
            
        )as _a 
        where 1=1
        and _a.sharecarrier = m.marketcarrier
    ) as sharefnos
    from
    t_set_shareflightno as m with(nolock)
    where 1=1 
    and m.state!='N'
    and m.startcity='HGH'
    and m.endcity='CKG'
    and m.carrier='CA'
    and m.marketcarrier in('G5','TV')
    ---and m.marketcarrier not in('')

 

-- 通过 over(partition by xx order by xx)来展示分组后其它的列
select 
        ss.actualcarrier
        ,ss.actualseat
        ,ss.sharecarrier
        ,ss.shareseat
        ,ss.startdate
        ,ss.enddate
        ,ROW_NUMBER() 
        over(
            partition by ss.actualcarrier,ss.actualseat,ss.sharecarrier,ss.shareseat 
            order by ss.actualcarrier,ss.actualseat,ss.sharecarrier,ss.shareseat
        ) 
    from t_config_sharecarrier_seat ss
    where ss.state='Y';

 

posted @ 2018-05-02 09:30  稚语希听  阅读(367)  评论(0)    收藏  举报