日時演算

 

(8.0.32)
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html


文字列→日時

SELECT STR_TO_DATE('2023-04-18 21:49:11','%Y-%m-%d %H:%i:%s');


日時→文字列

SELECT DATE_FORMAT( now(), '%Y-%m-%d %H:%i:%s');


select extract(year from now() );


select extract(month from now() );


select extract(day from now() );


select extract(hour from now() );


select extract(minute from now() );


select extract(second from now() );


前月末
select last_day( date_add(now() ,interval -1 month) );


当月1日
select date_add(last_day( date_add(now() ,interval -1 month) ), interval +1 day);

当月末
select last_day(now() );

翌月1日
select date_add(last_day(now() ), interval +1 day);


1分後
select date_add(now(),interval 1 minute);

1時間後
select date_add(now(),interval 1 hour);

1日後
select date_add(now(),interval 1 day);

1月後
select date_add(now(),interval 1 month);

1年後
select date_add(now(),interval 12 month);


日付差
SELECT DATEDIFF(now(),'2023-01-01');

 

(19c)


alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS';
alter session set nls_timestamp_format='YYYY/MM/DD HH24:MI:SS.FF3';


文字列→日時

select to_date('2023-04-18 21:49:11','YYYY-MM-DD HH24:MI:SS') from dual;
select to_timestamp('2023-04-18 21:49:11','YYYY-MM-DD HH24:MI:SS') from dual;


日時→文字列

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
select to_char(systimestamp,'YYYY-MM-DD HH24:MI:SS.FF6') from dual;



select extract(year from systimestamp) from dual;


select extract(month from systimestamp) from dual;


select extract(day from systimestamp) from dual;

UTC
select extract(hour from systimestamp) from dual;


select extract(minute from systimestamp) from dual;


select extract(second from systimestamp) from dual;

 


前月末
select last_day( add_months(sysdate,-1) ) from dual;


当月1日
select last_day( add_months(sysdate,-1) )+1 from dual;


当月末
select last_day(sysdate) from dual;

翌月1日
select last_day(sysdate)+1 from dual;

 

1分後
select sysdate + 1/(24*60) from dual;

1時間後
select sysdate + 1/24 from dual;

1日後
select sysdate + 1 from dual;

1月後
select add_months(sysdate,1) from dual;

1年後
select add_months(sysdate,12) from dual;


日付差
select sysdate - to_date('2023-01-01','YYYY-MM-DD') from dual;

 

(15)
https://www.postgresql.jp/document/14/html/functions-datetime.html
https://www.postgresql.jp/document/14/html/functions-formatting.html


文字列→日時

select to_date('2023-04-18','YYYY-MM-DD');
select to_timestamp('2023-04-18 21:49:11','YYYY-MM-DD HH24:MI:SS');

 

日時→文字列

select to_char(clock_timestamp(),'YYYY-MM-DD HH24:MI:SS');
select to_char(clock_timestamp(),'YYYY-MM-DD HH24:MI:SS.FF6');

 

 


select extract(year from clock_timestamp() );


select extract(month from clock_timestamp() );


select extract(day from clock_timestamp() );


select extract(hour from clock_timestamp() );


select extract(minute from clock_timestamp() );


select extract(second from clock_timestamp() );


前月末
select date_trunc('month', clock_timestamp() ) + interval '-1 day';


当月1日
select date_trunc('month', clock_timestamp() );


当月末
select date_trunc('month', clock_timestamp() + interval '1 month') + interval '-1 day';


翌月1日
select date_trunc('month', clock_timestamp() + interval '1 month');

 


1分後
select clock_timestamp() + interval '1 minute';

1時間後
select clock_timestamp() + interval '1 hour';

1日後
select clock_timestamp() + interval '1 day';

1月後
select clock_timestamp() + interval '1 month';

1年後
select clock_timestamp() + interval '1 year';


日付差
select clock_timestamp() - to_date('2023-01-01','YYYY-MM-DD');

 

 

(2022)

https://www.projectgroup.info/tips/SQLServer/SQL/SQL000016.html
https://sql55.com/query/get-first-and-last-day-of-a-month.php


文字列→日時

select cast('2023-04-18' as datetime2);
select cast('2023-04-18 21:49:11' as datetime2);

 

 

日時→文字列

select convert(datetime2, getdate(), 23);
select format(getdate(),'yyyy/MM/dd HH:mm:ss');

 

 


select datepart(year , getdate() );


select datepart(month , getdate() );


select datepart(day , getdate() );


select datepart(hour , getdate() );


select datepart(minute , getdate() );


select datepart(second , getdate() );

 

前月末
select eomonth(getdate(), -1);


当月1日
select dateadd(dd, 1, eomonth(getdate() , -1) );


当月末
select eomonth( getdate() );


翌月1日
select dateadd(dd, 1, eomonth(getdate() ) );

 


1分後
select dateadd(minute,1,getdate() );

1時間後
select dateadd(hour,1,getdate() );

1日後
select dateadd(day,1,getdate() );

1月後
select dateadd(month,1,getdate() );

1年後
select dateadd(year,1,getdate() );

 

日付差
select datediff(day,cast('2023-01-01' as datetime2), getdate() );