时间日期函数整理

一. SQL Server

1.1. 时间类型
数据类型 格式 范围 精确度
time hh:mm:ss[.nnnnnnn] 00:00:00.0000000 到 23:59:59.9999999 100 纳秒
date YYYY-MM-DD 0001-01-01 到 9999-12-31 1 天
smalldatetime YYYY-MM-DD hh:mm:ss 1900-01-01 到 2079-06-06 1 分钟
datetime YYYY-MM-DD hh:mm:ss[.nnn] 1753-01-01 到 9999-12-31 0.00333 秒
1.2. 日期函数

(1) getdate() 获取当前时间

select getdate()
 2018-07-04 08:57:55.587
select convert(varchar(100),getdate(),24)
 15:51:28
select convert(varchar(100),getdate(),23)
 2017-02-25
select convert(varchar(100),getdate(),120)
 2017-02-25 15:50:32  

(2) dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值

select dateadd(day,2,‘2004-10-15‘)
 2004-10-17 00:00:00.000

(3) datediff 返回跨两个指定日期的日期和时间边界数

select datediff(day,‘2004-09-01‘,‘2004-09-18‘)
 17

(4) datepart 返回代表指定日期的指定日期部分的整数

SELECT DATEPART(month, ‘2004-10-15‘)
 10

(5) 字符串转换为时间

SELECT convert(datetime,‘2017-12-12 00:00:01‘, 20)
 2017-12-12 00:00:01.000

二. MySQL

2.1. 时间类型
类型 大小(字节) 范围 格式
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD
TIME 3 ‘-838:59:59‘/‘838:59:59‘ HH:MM:SS
YEAR 1 1901/2155 YYYY
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS
2.2. 日期函数

(1) now() 获取当前时间

 select now()
  2008-08-08 22:28:21  

(2) 获得当前时间戳

select current_timestamp, current_timestamp()
 +---------------------+---------------------+
| current_timestamp | current_timestamp() |
+---------------------+---------------------+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+---------------------+---------------------+  

(3) 日期/时间转换为字符串

 select date_format(‘2008-08-08 22:23:01‘, ‘%Y-%y-%d %h:%i:%s‘)
  2008-08-08 10:23:01  

(4) 字符串转换为日期

select str_to_date(‘08/09/2008‘, ‘%m/%d/%Y‘)
 2008-08-09
select str_to_date(‘08/09/08‘ , ‘%m/%d/%y‘)
 2008-08-09
select str_to_date(‘08.09.2008‘, ‘%m.%d.%Y‘)
 2008-08-09
select str_to_date(‘08:09:30‘, ‘%h:%i:%s‘)
 08:09:30
select str_to_date(‘08.09.2008 08:09:30‘, ‘%m.%d.%Y %h:%i:%s‘)
 2008-08-09 08:09:30

(5) adddate()

select date_add(now(), interval 1 day);
select date_add(now(), interval 1 hour);
select date_add(now(), interval 1 minute);
select date_add(now(), interval ‘01:15:30‘ hour_second);
select date_add(now(), interval ‘1 01:15:30‘ day_second);

(6) date_sub()

select date_sub(‘1998-01-01 00:00:00‘, interval ‘1 1:1:1‘ day_second)
1997-12-30 22:58:59

(7) datediff

select datediff(‘2008-08-08‘, ‘2008-08-01‘)
 7
 select timediff(‘2008-08-08 10:00:00‘,‘2008-08-08 19:00:00‘)
 -09:00:00

三. Oracle

3.1. 时间类型

date类型存储数据的格式为年月日时分秒,可以精确到秒。

timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位),但默认存储的精度为微秒(6)。

3.2. 日期函数

(1) 获取当前时间

SELECT SYSDATE FROM DUAL; --date
SELECT SYSTIMESTAMP FROM DUAL; --timestamp

(2) 日期和字符转换函数用法(to_date,to_char)

select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) as nowTime from dual;--日期转化为字符串
select to_char(sysdate,‘yyyy‘) as nowYear from dual;--获取时间的年
select to_char(sysdate,‘mm‘) as nowMonth from dual;--获取时间的月
select to_char(sysdate,‘dd‘) as nowDay from dual;--获取时间的日

select to_date(‘2004-05-07 13:23:44‘,‘yyyy-mm-dd hh24:mi:ss‘) from dual   

(3) 减去时长

select sysdate,sysdate - interval ‘7‘ MINUTE from dual;--当前时间减去7分钟的时间
select sysdate - interval ‘7‘ hour from dual;--当前时间减去7小时的时间
select sysdate - interval ’7’ day from dual; --当前时间减去7天的时间
select sysdate,sysdate - interval ‘7‘ month from dual;--当前时间减去7月的时间 

(4) trunc[截断到最接近的日期,单位为天] ,返回的是日期类型

   select sysdate S1,
     trunc(sysdate) S2,       --返回当前日期,无时分秒
     trunc(sysdate,‘year‘) YEAR,  --返回当前年的1月1日,无时分秒
     trunc(sysdate,‘month‘) MONTH ,  --返回当前月的1日,无时分秒
     trunc(sysdate,‘day‘) DAY   --返回当前星期的星期天,无时分秒
   from dual

附录:

https://www.cnblogs.com/ggjucheng/p/3352280.html

http://www.codes51.com/itwd/1504275.html

https://www.cnblogs.com/aipan/p/8080151.html

原文地址:https://www.cnblogs.com/xuty/p/9262985.html

时间: 2024-11-09 02:15:16

时间日期函数整理的相关文章

js 格式化时间日期函数小结

下面是脚本之家为大家整理的一些格式化时间日期的函数代码,需要的朋友可以参考下. 代码如下: Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(

PostgreSQL的时间/日期函数使用

PostgreSQL的常用时间函数使用整理如下: 一.获取系统时间函数 1.1 获取当前完整时间 select now(); david=# select now(); now ------------------------------- 2013-04-12 15:39:40.399711+08 (1 row) david=# current_timestamp 同 now() 函数等效. david=# select current_timestamp; now -------------

[转帖]PostgreSQL的时间/日期函数使用

https://www.cnblogs.com/mchina/archive/2013/04/15/3010418.html 这个博客的 文章目录比上一个好十倍 另外interval 之前的必须加 之后的时间可以不用加 勒了个擦的. PostgreSQL的常用时间函数使用整理如下: 一.获取系统时间函数 1.1 获取当前完整时间 select now(); david=# select now(); now ------------------------------- 2013-04-12 1

SQL-数学、字符串、时间日期函数和类型转换

--数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次方,select POWER(2,2)--round四舍五入,select round (6.45,1)--sqrt开平方select SQRT(9)--square平方select SQUARE(5) --字符串函数--ASCII 返回字符串最左边的字符ascii码select ASCII('na

聚合函数,数学、字符串、函数,时间日期函数

create database lianxi0425--创建一个名字为lianxi0425的数据库 go use lianxi0425 --使用练习0425这个数据库 go --创建一个学生xinxi1的表,填写学号.名字.出生年份.性别.分数.班级 create table xinxi1 ( code int not null, name varchar(50) not null, birth varchar(50) not null, sex char(10) not null, score

SQl Server 函数篇 数学函数,字符串函数,转换函数,时间日期函数

数据库中的函数和c#中的函数很相似 按顺序来, 这里价格特别的 print  可以再消息栏里打印东西 数学函数 ceiling()  取上限   不在乎小数点后面有多大,直接忽略 floor()     取下限   同上 round(列名,保留的位数)   四舍五入   保留小数最后那位数进不进一只看保留位数的后一位数够不够条件,再往后的就不管了 ABS()     绝对值---防抱死233 PI()        圆周率   就是查询一个圆周率 SQRT()平方根 字符串函数 upper()

数据库开发基础-教案-5-字符串函数、时间日期函数、数据转换,函数转换

字符串函数: 时间日期函数: SET DATEFIRST 1 SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today' SELECT GETDATE() 数据转换.函数转换: 练习:查看名字,生日

时间日期函数,类型转化,子查询,分页查询

1.时间日期函数: SET DATEFIRST 1 --设置星期一为第一天--datepart函数,返回时间日期中的某一个部分--参数1是指返回哪一个部分,dw表示dayofweek--参数2是指哪个时间日期里面去返回--datefirst是系统常量,在使用时需要加上@@SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'--getdate指在执行时获取当前系统时间SELECT GETDATE()--在执行时取当前

SQL server 模糊查询 排序 聚合函数 数学函数 字符串函数 时间日期函数 转换、函数转换

create database lianxi831  --创建数据库gouse lianxi831  --引用数据库gocreate table xs  --插入表格( code int not null,  --写入内容 name varchar(10), cid varchar(18), banji varchar(10), yufen decimal(18,2), shufen decimal(18,2), yingfen decimal(18,2),)goinsert into xs v