Heim > Datenbank > MySQL-Tutorial > SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:40:59
Original
1178 Leute haben es durchsucht

练习使用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>
Nach dem Login kopieren


  •  MySQL

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

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

<span>SELECT CURDATE()

</span>
Nach dem Login kopieren
  • Oracle

sysdate (返回服务器时间)

<span>SELECT SYSDATE 
FROM dual;
</span>
Nach dem Login kopieren
  • PostgreSQL

current_date (返回当天的日期)

current_timestamp  (返回日期和时间)

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

<span>SELECT CURRENT_DATE;
</span>
Nach dem Login kopieren


【注意】

  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
Nach dem Login kopieren

*  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');
->'周四'
Nach dem Login kopieren

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

SELECT TO_CHAR(SYSDATE, 'Day') 
FROM dual;
Nach dem Login kopieren

  • PostgreSQL:date_part(text,timestamp)

SELECT DATE_PART('dow', date 'now');
Nach dem Login kopieren


3. 两个时间的间隔

  • SQLServer

SELECT DATADIFF(dd,'1/1/01',GETDATE())
GO
Nach dem Login kopieren

  • MySQL

SELECT FROM_DAYS(TO_DAYS(CURDATE()) - TO_DAYS('2012-12-05'));
Nach dem Login kopieren

  • Oracle

SELECT TO_DATE('25-Nov-2000','dd-mon-yyyy') - TO_DATE('25-Aug-1969','dd-mon-yyyy')
FROM dual;
Nach dem Login kopieren

  • PostgreSQL

SELECT AGE(CURRENT_DATE,'25-Aug-1969');
Nach dem Login kopieren


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

  • SQL Server

SELECT CONVERT(VARCHAR(11),GETDATE(),102)
GO
Nach dem Login kopieren

  • MySQL

SELECT DATE_FORMAT("2001-11-25","%M %E,%Y");
Nach dem Login kopieren

  • Oracle

ELECT TO_CHAR(SYSDATE,'dd-Mon-yyyy hh:mi,ss PM')
FROM dual;
Nach dem Login kopieren

  • PostgreSQL

SELECT TO_CHAR(timestamp(CURRENT_DATE),'dd-Mon-yyyy hh:mi:ss PM')
Nach dem Login kopieren



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage