好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

postgresql中时间转换和加减操作

昨天遇到一个floor向下取整的问题,现在将它记录下来。

首先floor是需要一个int或者dp。那么我们日期 加减 转换 ,timestamp 转data,是需要先将其转成char,再由char转date,再相减,得出一个符合floor函数要求的值。

代码如下:

FLOOR((to_date(to_char(current_timestamp, 'yyyy-MM-dd hh:mi:ss'), 'yyyy-mm-dd')

- to_date(to_char(ca.birthday, 'yyyy-MM-dd hh:mi:ss'), 'yyyy-mm-dd')) / 365) as age

同样的,在java里面要想得到timestamp的当前 时间 ,也是用util的date转string再转timestamp

补充:PostgreSQL的日期运算计算函数使用

一:各个数据中的连接符

SqlServer的连接符:+(加号)

Sqlite的连接符:.(点)

PostgreSQL的连接符:||(或)

二:

今天在PostgreSQL计算日期的时候,翻了一些资料,很少,就记录下来吧~!

其中使用到的函数及变量

to_char()、Date()、now()、current_date

计算两个日期的差

current_date为今天的日期,为:2015-06-03

?

1

2

3

4

5

Date ( '2015-06-05' )- current_date =2

select to_char( current_date , 'yyyy' )|| '-' ||to_char(birthday, 'mm-dd' ), Date (to_char( current_date , 'yyyy' )|| '-' ||to_char(birthday, 'mm-dd' ))- current_date

from tablename where delflag=0 and status=0

and Date (to_char( current_date , 'yyyy' )|| '-' ||to_char(birthday, 'mm-dd' ))- current_date >=0

and Date (to_char( current_date , 'yyyy' )|| '-' ||to_char(birthday, 'mm-dd' ))- current_date <=7 order by birthday desc

三:

?

1

2

3

select now() + interval '1 days' ;

select now() + interval '1 month' ;

select now() + interval '1 years' ;

四:

SqlServer中进行日期计算时,用到函数

?

1

2

3

4

5

CONVERT (),DATEPART(),getDate()

select CONVERT ( varchar (10), CONVERT ( varchar (4),DATEPART( year ,getDate()))+ '-' + CONVERT ( varchar (2),DATEPART( month ,birthday))+ '-' + CONVERT ( varchar (2),DATEPART( day ,birthday)),120),datediff( day , CONVERT ( varchar (10),getdate(),120), CONVERT ( varchar (10), CONVERT ( varchar (4),DATEPART( year ,getDate()))+ '-' + CONVERT ( varchar (2),DATEPART( month ,birthday))+ '-' + CONVERT ( varchar (2),DATEPART( day ,birthday)),120))

from tablename where delflag=0 and status=0

and datediff( day , CONVERT ( varchar (10),getdate(),120), CONVERT ( varchar (10), CONVERT ( varchar (4),DATEPART( year ,getDate()))+ '-' + CONVERT ( varchar (2),DATEPART( month ,birthday))+ '-' + CONVERT ( varchar (2),DATEPART( day ,birthday)),120))<=7

and datediff( day , CONVERT ( varchar (10),getdate(),120), CONVERT ( varchar (10), CONVERT ( varchar (4),DATEPART( year ,getDate()))+ '-' + CONVERT ( varchar (2),DATEPART( month ,birthday))+ '-' + CONVERT ( varchar (2),DATEPART( day ,birthday)),120))>=0 order by birthday desc

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/qq_40894047/article/details/84652707

查看更多关于postgresql中时间转换和加减操作的详细内容...

  阅读:67次