Oracle で日付を取るときは、 SYSDATE 。もう、皆さん呪文のようにこう書くでしょう。
SELECT SYSDATE FROM DUAL;
2004/05/11 08:44:45
実際の表を読みに行かないときには、ダミー表のDUALを指定しますよね。SQL ServerではSYSDATEのかわりにGETDATE関数を使います
SELECT getDate()
2004-05-11 08:40:08.640
FROM句以降がないのに気が付きましたか? SQL Serverでは、テーブルからデータを取らないSELECT文では、FROM句以降は必要ありません。また、日付のデータが、OracleのDATE型では秒単位までなのに対して、SQL ServerのDATETIME型は秒以下のレベルもあることに注意しましょう。
さらに日付の加工も少し違ってきます。日付データの時刻切捨ての方法を確認しましょう。Oracleでは、日付データにTRUNC関数を使うことで、日時の情報だけを取り出せます。
select trunc(sysdate) from dual
SQL Serverでは、時刻を切り捨てる関数はないので、以下のように工夫します。
select convert (datetime,convert (nvarchar,getdate() ,111),120)
これは日付を一度文字列に変換して、年月日だけを切り取った後に、さらに日付に戻しています。
日付型データに関しては、OracleもSQL Serverも時刻部分を省略したときに00:00:00(午前0時)扱いになるのは同じです。
ほかにも、SQL Serverには以下のような日付関数があります。
 |
DATEADD |
 |
日付に日数を加算する |
 |
DATEDIFF |
 |
日付同士の差を取得する |
 |
DATEPART |
 |
日付の月や年などを部分的に取り出す |
 |
DAY |
 |
「日」を取り出す |
 |
MONTH |
 |
「月」を取り出す |
 |
YEAR |
 |
「年」を取り出す |
|