天天看點

oracle sql now函數,SQL Server,MySQL,Oracle,PostgreSQL中常用函數用法(1)日

練習使用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()函數 (傳回目前的日期和時間)

SELECT GETDATE()

GO

MySQL

curdate()函數(傳回目前的日期)

now()函數 (傳回目前的日期和時間)

SELECT CURDATE()

Oracle

sysdate (傳回伺服器時間)

SELECT SYSDATE

FROM dual;

PostgreSQL

current_date (傳回當天的日期)

current_timestamp (傳回日期和時間)

now() (傳回目前的日期和時間,等效于 current_timestamp)

SELECT CURRENT_DATE;

【注意】

以上的函數都是不需要參數的。

在Oracle中current_date和sysdate都是現實目前時間,結果基本相同,但是也有差別:

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

* datepart()函數可以友善的取到日期中的各個部分,如日期:2012-12-05 15:15:36.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');

->'周四'

Oracle:to_char(date,'格式')

SELECT TO_CHAR(SYSDATE, 'Day')

FROM dual;

PostgreSQL:date_part(text,timestamp)

SELECT DATE_PART('dow', date 'now');

3. 兩個時間的間隔

SQLServer

SELECT DATADIFF(dd,'1/1/01',GETDATE())

GO

MySQL

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

Oracle

SELECT TO_DATE('25-Nov-2000','dd-mon-yyyy') - TO_DATE('25-Aug-1969','dd-mon-yyyy')

FROM dual;

PostgreSQL

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

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

SQL Server

SELECT CONVERT(VARCHAR(11),GETDATE(),102)

GO

MySQL

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

Oracle

ELECT TO_CHAR(SYSDATE,'dd-Mon-yyyy hh:mi,ss PM')

FROM dual;

PostgreSQL

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

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!