Home > Database > Mysql Tutorial > SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日

SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 15:40:59
Original
1182 people have browsed it

练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是没有的,google一番发现原来是要用to_char()。 搜索到一篇英文文章《Executing Common SQL Coding

         练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是没有的,google一番发现原来是要用to_char()。

        搜索到一篇英文文章《Executing Common  SQL Coding Tasks Using Function Calls》(常用SQL函数调用的区别),其中列出了如:MS SQL Server、MySQL、Oracle、PostgreSQL,这几个常用数据库中的常用函数。

        边翻译加自己的补充,分成几个文章共享给大家。方便以后的使用。

日期操作

 

1. 获取当前日期和时间

  • SQL Server

getdate()函数   (返回当前的日期和时间)

<span>SELECT GETDATE()
GO</span>
Copy after login


  •  MySQL

curdate()函数(返回当前的日期)

now()函数 (返回当前的日期和时间)

<span>SELECT CURDATE()

</span>
Copy after login
  • Oracle

sysdate (返回服务器时间)

<span>SELECT SYSDATE 
FROM dual;
</span>
Copy after login
  • PostgreSQL

current_date (返回当天的日期)

current_timestamp  (返回日期和时间)

now()  (返回当前的日期和时间,等效于 current_timestamp)

<span>SELECT CURRENT_DATE;
</span>
Copy after login


【注意】

  1. 以上的函数都是不需要参数的。
  2. Oraclecurrent_datesysdate都是现实当前时间,结果基本相同,但是也有区别:
      a.  urrent_date返回的是当前会话时间,sysdate
    返回的是服务器时间。
     b. current_date有时候比sysdate
    快一秒,这可能是四舍五入的结果。
     c. 如果修改当前会话的时区,比如将中国的时区为东八区,修改为东九区,则current_date显示的时间为东九区时间,根据东加西减的原则,current_date应该比sysdate快一小时.


2. 操作时间的获取子域。比如:年、月、日、小时等等。

  • SQL Server:datepart(datepart,date)
SELECT DATEPART(dw, GETDATE())
GO
Copy after login

*  datepart()函数可以方便的取到日期中的各个部分,如日期:2012-12-05 151536.513


yy 取年:2012
mm 取月:12
dd 取月中的天:5
dy 取年中的天:340
wk 取年中的周:50
dw 取周中的天:4
qq 取年中的季度:4
hh 取小时:15
mi 取分钟:15
ss 取秒:36


  • MySQL:dayofmonth(date)返回对应的工作日名称
SELECT DAYNAME('1998-02-03');
->'周四'
Copy after login

  • Oracle:to_char(date,'格式')

SELECT TO_CHAR(SYSDATE, 'Day') 
FROM dual;
Copy after login

  • PostgreSQL:date_part(text,timestamp)

SELECT DATE_PART('dow', date 'now');
Copy after login


3. 两个时间的间隔

  • SQLServer

SELECT DATADIFF(dd,'1/1/01',GETDATE())
GO
Copy after login

  • MySQL

SELECT FROM_DAYS(TO_DAYS(CURDATE()) - TO_DAYS('2012-12-05'));
Copy after login

  • Oracle

SELECT TO_DATE('25-Nov-2000','dd-mon-yyyy') - TO_DATE('25-Aug-1969','dd-mon-yyyy')
FROM dual;
Copy after login

  • PostgreSQL

SELECT AGE(CURRENT_DATE,'25-Aug-1969');
Copy after login


4. 日期格式化(Mon,DD,YYYY;mm/dd/yy;dd/mm/yy;等等)

  • SQL Server

SELECT CONVERT(VARCHAR(11),GETDATE(),102)
GO
Copy after login

  • MySQL

SELECT DATE_FORMAT("2001-11-25","%M %E,%Y");
Copy after login

  • Oracle

ELECT TO_CHAR(SYSDATE,'dd-Mon-yyyy hh:mi,ss PM')
FROM dual;
Copy after login

  • PostgreSQL

SELECT TO_CHAR(timestamp(CURRENT_DATE),'dd-Mon-yyyy hh:mi:ss PM')
Copy after login



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
sql file
From 1970-01-01 08:00:00
0
0
0
php - Overhead of prepare vs sql?
From 1970-01-01 08:00:00
0
0
0
Print sql statement
From 1970-01-01 08:00:00
0
0
0
Pass array to SQL insert query using PHP
From 1970-01-01 08:00:00
0
0
0
sql optimization or
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template