-- 列举了不同数据库的日期操作
-- oracle
select SYSTIMESTAMP,sysdate,Current_date from dual; -- 当前时间
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; -- 格式化
select sysdate+1/24;
select trunc(sysdate,'MI') from dual; -- 分钟截断
select sysdate-trunc(sysdate,dd);
select extract(year from sysdate) from dual; -- 提取
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff6') time2,to_char(current_timestamp) time2 from dual;--毫秒时间
select to_char(to_date('2017-01-01','yyyy-mm-dd'),'day')
,to_char(to_date('2017-01-01','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; -- 星期
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual -- 一年当中第几天
select sysdate,next_day(sysdate,1) from dual-- next_day函数,返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
select sysdate,last_day(sysdate) from dual -- 月份最后一天,注意只是到天
select sysdate,add_months(last_day(sysdate),1) from dual-- 月份增减函数
-- sqlserver
select convert(varchar(100),getdate(),23) ; -- 年月日
select convert(varchar(100),getdate(),108) ; -- 时分秒
select convert(varchar(100),getdate(),120),CONVERT(varchar(100), GETDATE(), 121) ; -- 年月日时分秒,和带毫秒的
select dateadd(HH,-1,getdate()); -- 天用DD,分钟用MI,月用MM
select datediff(hour,getdate(),dateadd(HH,1,getdate())); -- 两个时间相差小时,天用day
select year(getdate()); select Datename(hour,getdate()); select datename(year,getdate())
SELECT DATEPART(yyyy,getdate()),DATEPART(mm,getdate()),DATEPART(dd,getdate()); -- 跟oracle的extract类似
-- mysql
SELECT CURRENT_DATE,CURRENT_TIME(),NOW(),SYSDATE(),CURRENT_TIMESTAMP
,MICROSECOND('2017-12-31 23:59:59.000010'),DATE_FORMAT('2017-12-31 23:59:59.000010', '%f')
,DATE_FORMAT('2017-12-31 23:59:59.000010','%Y-%m-%d %H:%i:%s:%f')
,DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s:%f')
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),; -- 格式化时间日期
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY); -- 小时用hour,分钟用minute
SELECT TIMESTAMPDIFF(MINUTE,NOW(),DATE_ADD(NOW(),INTERVAL 1 MINUTE));
SELECT EXTRACT(YEAR FROM NOW()),YEAR(NOW()); -- extract类似oracle
-- 上个月的第一天: -- 其中DATE_SUB表名减去指定天或小时
SELECT DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(), '%y-%m-%d'),INTERVAL EXTRACT(DAY FROM NOW()) - 1 DAY),INTERVAL 1 MONTH);
-- 上个月的最后一天:
SELECT DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(), '%y-%m-%d'),INTERVAL EXTRACT(DAY FROM NOW()) DAY),INTERVAL 0 MONTH);
-- 这个月的第一天:
SELECT DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(), '%y-%m-%d'),INTERVAL EXTRACT(DAY FROM NOW()) - 1 DAY),INTERVAL 0 MONTH);
-- 这个月的最后一天:
SELECT DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(), '%y-%m-%d'),INTERVAL EXTRACT(DAY FROM NOW()) DAY),INTERVAL -1 MONTH);
日期函数
最新推荐文章于 2023-02-21 20:53:09 发布