sql中常用的日期转换

一、sqlserver日期时间转换

1、常用格式转换(当前时间:2023-02-10)

Select CONVERT(varchar(100), GETDATE(), 8)   -- 10:57:46 
Select CONVERT(varchar(100), GETDATE(), 14)  -- 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20)  -- 2023-02-10 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21)  -- 2023-02-10 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 23)  -- 2023-02-10
Select CONVERT(varchar(100), GETDATE(), 24)  -- 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25)  -- 2023-02-10 10:57:47.250 
Select CONVERT(varchar(100), GETDATE(), 102) -- 2023.02.10   
Select CONVERT(varchar(100), GETDATE(), 108) -- 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 111) -- 2023/02/10
Select CONVERT(varchar(100), GETDATE(), 112) -- 20230210
Select CONVERT(varchar(100), GETDATE(), 120) -- 2023-02-10 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121) -- 2023-02-10 10:57:49.700

2、获取不同时间日期

-- 上个月一号
select dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate()))
-- 上月月底
select dateadd(dd,-day(getdate()),getdate())                                           
-- 上月当天
select dateadd(month,-1,getdate())  						                             
-- 本月一号
select dateadd(dd,-day(getdate())+1,getdate())                                         
-- 本月底
select dateadd(dd,-day(dateadd(month,1,getdate())),dateadd(month,1,getdate()))         
-- 下月一号
select dateadd(dd,-day(dateadd(month,1,getdate()))+1,dateadd(month,1,getdate()))       
-- 下月月底
select dateadd(dd,-day(dateadd(month,2,getdate())),dateadd(month,2,getdate()))         

二、odps sql日期转换

-- TO_DATE:字符串转日期
-- 前后格式要一样
 select TO_DATE('2023-02-10 00:00:00','yyyy-mm-dd');			-- 报错
 select TO_DATE('2023-02-10','yyyy-mm-dd');						-- 2023-02-10 00:00:00
 select TO_DATE('2023@02@10','yyyy@mm@dd');						-- 2023-02-10 00:00:00
 select date(TO_DATE('20230210','yyyymmdd'));					-- 2023-02-10


 -- TO_CHAR:日期转字符串,把日期转成后面格式的字符串
 select TO_CHAR('20230210','yyyymmdd');							-- 报错,前面必须要是日期格式
 select TO_CHAR(TO_DATE('20230210','yyyymmdd'),'yyyy/mm/dd');	-- 2023/02/10
 select TO_CHAR(TO_DATE('20230210','yyyymmdd'),'yyyy-mm-dd');	-- 2023-02-10

三、postgresql日期转换

-- 日期:下个月当天 2023-03-10
SELECT to_date((to_char(( now() + interval '1 month'),'YYYY-MM-DD')),'YYYY-MM-DD')


-- 日期:下个月第一天 2023-03-01
SELECT to_date((to_char(( now() + interval '1 month'),'YYYY-MM-01')),'YYYY-MM-DD')


-- 日期:上个月第一天 2023-01-01
SELECT to_date((to_char(( now() + interval '-1 month'),'YYYY-MM-01')),'YYYY-MM-DD')


-- 日期:本月底 2023-02-28
SELECT (to_date((to_char(( now() + interval '1 month'),'YYYY-MM-01')),'YYYY-MM-DD')-1)::date