日付関数
CURRENT_DATE()
現在のdate 値を返します。
SELECT CURRENT_DATE(); -- Result: 2018-02-01
CURRENT_TIMESTAMP()
現在のデータベースシステムのタイムスタンプをdatetime 値で返します。この値はGETDATE およびSYSDATETIME と等しく、常にローカルタイムゾーンになります。
SELECT CURRENT_TIMESTAMP(); -- Result: 2018-02-01 03:04:05
DATEADD (datepart , integer_number , date [, dateformat])
date の指定されたdatepart に、指定されたnumber(符号付き整数)を加算したdatetime 値を返します。
- datepart:整数値が加算される日付の部分。有効な値(およびその省略形)は、year(yy、yyyy)、quarter(qq、q)、month(mm、m)、dayofyear(dy、y)、day(dd、d)、week(wk、ww)、weekday(dw)、hour(hh)、minute(mi、n)、second(ss、s)、millisecond(ms)です。
- number:加算される数値。
- date:datetime データ型の式。
- dateformat:出力日付形式(オプション)。
SELECT DATEADD('d', 5, '2018-02-01'); -- Result: 2018-02-06 SELECT DATEADD('hh', 5, '2018-02-01 00:00:00'); -- Result: 2018-02-01 05:00:00
DATEDIFF (datepart , startdate , enddate)
指定されたstartdate とenddate の差(符号付き整数)を返します。
- datepart:整数値が加算される日付の部分。有効な値(およびその省略形)は、day(dd、d)、hour(hh)、minute(mi、n)、second(ss、s)、millisecond(ms)です。
- startdate:開始日のdatetime 式。
- enddate:終了日のdatetime 式。
SELECT DATEDIFF('d', '2018-02-01', '2018-02-10'); -- Result: 9 SELECT DATEDIFF('hh', '2018-02-01 00:00:00', '2018-02-01 12:00:00'); -- Result: 12
DATEFROMPARTS(integer_year, integer_month, integer_day)
指定された年、月、および日のdatetime 値を返します。
- year:年を指定する整数式。
- month:1~12 までの月を指定する整数式。
- day:日にちを指定する整数式。
SELECT DATEFROMPARTS(2018, 2, 1); -- Result: 2018-02-01
DATENAME(datepart , date)
指定されたdate の指定されたdatepart を表す文字列を返します。
- datepart:返される日付の部分。有効な値(およびその省略形)は、year(yy、yyyy)、quarter(qq、q)、month(mm、m)、dayofyear(dy、y)、day(dd、d)、week(wk、ww)、weekday(dw)、hour(hh)、minute(mi、n)、second(ss、s)、millisecond(ms)、microsecond(mcs)、nanosecond(ns)、TZoffset(tz)です。
- date:datetime 式。
SELECT DATENAME('yy', '2018-02-01'); -- Result: '2018' SELECT DATENAME('dw', '2018-02-01'); -- Result: 'Thursday'
DATEPART(datepart, date [,integer_datefirst])
指定されたdate の指定されたdatepart を表す文字列を返します。
- datepart:返される日付の部分。有効な値(およびその省略形)は、year (yy, yyyy)、quarter (qq, q)、month (mm, m)、dayofyear (dy, y)、day (dd, d)、week (wk, ww)、weekday (dw)、hour (hh)、minute (mi, n)、second (ss, s)、millisecond (ms)、microsecond (mcs)、nanosecond (ns)、TZoffset (tz)、ISODOW、ISO_WEEK (isoweek, isowk,isoww)、ISOYEAR です。
- date:datetime 文字列。
- datefirst:週の最初の曜日に対応する整数(オプション)。ディフォルト値は7、日曜日。
SELECT DATEPART('yy', '2018-02-01'); -- Result: 2018 SELECT DATEPART('dw', '2018-02-01'); -- Result: 5
DATETIME2FROMPARTS(integer_year, integer_month, integer_day, integer_hour, integer_minute, integer_seconds, integer_fractions, integer_precision)
指定されたdatepart のdatetime 値を返します。
- year:年を指定する整数式。
- month:1~12 までの月を指定する整数式。
- day:日にちを指定する整数式。
- hour:時間を指定する整数式。
- minute:分を表す整数式。
- seconds:秒を指定する整数式。
- fractions:小数部分を表す整数式。
- precision:小数部分の有効桁数を指定する整数式。
SELECT DATETIME2FROMPARTS(2018, 2, 1, 1, 2, 3, 456, 3); -- Result: 2018-02-01 01:02:03.456
DATETIMEFROMPARTS(integer_year, integer_month, integer_day, integer_hour, integer_minute, integer_seconds, integer_milliseconds)
指定されたdatepart のdatetime 値を返します。
- year:年を指定する整数式。
- month:1~12 までの月を指定する整数式。
- day:日にちを指定する整数式。
- hour:時間を指定する整数式。
- minute:分を表す整数式。
- seconds:秒を指定する整数式。
- milliseconds:ミリ秒を指定する整数式。
SELECT DATETIMEFROMPARTS(2018, 2, 1, 1, 2, 3, 456); -- Result: 2018-02-01 01:02:03.456
DATE_TRUNC(date, datepart)
指定されたdatepart の精度に日付を切り捨てます。Oracle TRUNC 関数をモデルにしています。
- date:日付を指定するdatetime 文字列。
- datepart:有効なdatepart 構文についてはOracle documentation を参照してください。
SELECT DATE_TRUNC('05-04-2005', 'YY'); -- Result: '1/1/2005' SELECT DATE_TRUNC('05-04-2005', 'MM'); -- Result: '5/1/2005'
DATE_TRUNC2(datepart, date, [weekday])
指定されたdatepart の精度に日付を切り捨てます。PostgreSQL date_trunc 関数をモデルにしています。
- datepart:'millennium'、'century'、'decade'、'year'、'quarter'、'month'、'week'、'day'、'hour'、'minute' 、または'second' のいずれか。
- date:日付を指定するdatetime 文字列。
- weekday:週の最初の日として使用する曜日(オプション)。'sunday'、'monday' など。
SELECT DATE_TRUNC2('year', '2020-02-04'); -- Result: '2020-01-01' SELECT DATE_TRUNC2('week', '2020-02-04', 'monday'); -- Result: '2020-02-02', which is the previous Monday
DAY(date)
指定されたdate の日コンポーネントを指定する整数を返します。
- date:日付を指定するdatetime 文字列。
SELECT DAY('2018-02-01'); -- Result: 1
DAYOFMONTH(date)
指定されたdate 部分の日にちを返します。- date:日付を指定するdatetime 文字列。
SELECT DAYOFMONTH('04/15/2000'); -- Result: 15
DAYOFWEEK(date)
指定されたdate 部分の曜日を返します。- date:日付を指定するdatetime 文字列。
SELECT DAYOFWEEK('04/15/2000'); -- Result: 7
DAYOFYEAR(date)
指定されたdate 部分の年の通日を返します。- date:日付を指定するdatetime 文字列。
SELECT DAYOFYEAR('04/15/2000'); -- Result: 106
EOMONTH(date [, integer_month_to_add ]) or LAST_DAY(date)
指定されたdate を含む月、またはオプションでその月からオフセットされた月の最終日を返します。
- date:月の最終日を返す日付を指定するdatetime 式。
- integer_month_to_add:月末を計算する前に日付に追加する月数を指定する整数式(オプション)。
SELECT EOMONTH('2018-02-01'); -- Result: 2018-02-28 SELECT LAST_DAY('2018-02-01'); -- Result: 2018-02-28 SELECT EOMONTH('2018-02-01', 2); -- Result: 2018-04-30
FDWEEK(date)
指定されたdate 部分の週の最初の日付を返します。- date:日付を指定するdatetime 文字列。
SELECT FDWEEK('02-08-2018'); -- Result: 2/4/2018
FDMONTH(date)
指定されたdate 部分の月の最初の日付を返します。- date:日付を指定するdatetime 文字列。
SELECT FDMONTH('02-08-2018'); -- Result: 2/1/2018
FDQUARTER(date)
指定されたdate 部分の四半期の最初の日付を返します。- date:日付を指定するdatetime 文字列。
SELECT FDQUARTER('05-08-2018'); -- Result: 4/1/2018
FILEMODIFIEDTIME(uri)
関連ファイルの変更日に関連付けられたタイムスタンプを返します。
- uri:ローカルファイルシステム上のファイルを指す絶対パス。
SELECT FILEMODIFIEDTIME('C:/Documents/myfile.txt'); -- Result: 6/25/2019 10:06:58 AM
FROM_DAYS(datevalue)
1582-10-15以降の日数から派生した日付を返します(グレゴリオ暦に基づく)。これはMYSQL FROM_DAYS 関数と同等です。
- datevalue:1582-10-15からの日数を表す整数値。
SELECT FROM_DAYS(736000); -- Result: 2/6/2015
GETDATE()
現在のデータベースシステムのタイムスタンプをdatetime 値で返します。この値はCURRENT_TIMESTAMP およびSYSDATETIME と等しく、常にローカルタイムゾーンになります。
SELECT GETDATE(); -- Result: 2018-02-01 03:04:05
GETUTCDATE()
UTC datetime 値としてフォーマットされた現在のデータベースシステムのタイムスタンプを返します。SYSUTCDATETIME と同じです。
SELECT GETUTCDATE(); -- For example, if the local timezone is Eastern European Time (GMT+2) -- Result: 2018-02-01 05:04:05
HOUR(date)
指定されたdatetime から時間コンポーネントを返します。
- date:日付を指定するdatetime 文字列。
SELECT HOUR('02-02-2020 11:30:00'); -- Result: 11
ISDATE(date, [date_format])
この値が有効なdate、time、またはdatetime 値である場合は1を返します。それ以外の場合は0を返します。
- date:datetime 文字列。
- date_format:datetime 形式(オプション)。
SELECT ISDATE('2018-02-01', 'yyyy-MM-dd'); -- Result: 1 SELECT ISDATE('Not a date'); -- Result: 0
LAST_WEEK()
現在の日付のちょうど一週間前のタイムスタンプを返します。
SELECT LAST_WEEK(); //Assume the date is 3/17/2020 -- Result: 3/10/2020
LAST_MONTH()
現在の日付のちょうど一ヶ月前のタイムスタンプを返します。
SELECT LAST_MONTH(); //Assume the date is 3/17/2020 -- Result: 2/17/2020
LAST_YEAR()
現在の日付のちょうど一年前のタイムスタンプを返します。
SELECT LAST_YEAR(); //Assume the date is 3/17/2020 -- Result: 3/10/2019
LDWEEK(date)
指定された週の最終日を返します。
- date:datetime 文字列。
SELECT LDWEEK('02-02-2020'); -- Result: 2/8/2020
LDMONTH(date)
指定された月の最終日を返します。
- date:datetime 文字列。
SELECT LDMONTH('02-02-2020'); -- Result: 2/29/2020
LDQUARTER(date)
指定された四半期の最終日を返します。
- date:datetime 文字列。
SELECT LDQUARTER('02-02-2020'); -- Result: 3/31/2020
MAKEDATE(year, days)
年と日数から日付値を返します。
- year:年
- days:その年の日数。値は1より大きい必要があります。
SELECT MAKEDATE(2020, 1); -- Result: 2020-01-01
MINUTE(date)
指定されたdatetime から分コンポーネントを返します。
- date:日付を指定するdatetime 文字列。
SELECT MINUTE('02-02-2020 11:15:00'); -- Result: 15
MONTH(date)
指定されたdatetime から月コンポーネントを返します。
- date:日付を指定するdatetime 文字列。
SELECT MONTH('02-02-2020'); -- Result: 2
QUARTER(date)
指定されたdatetime に関連付けられた四半期を返します。
- date:日付を指定するdatetime 文字列。
SELECT QUARTER('02-02-2020'); -- Result: 1
SECOND(date)
指定されたdatetime から秒コンポーネントを返します。
- date:日付を指定するdatetime 文字列。
SELECT SECOND('02-02-2020 11:15:23'); -- Result: 23
SMALLDATETIMEFROMPARTS(integer_year, integer_month, integer_day, integer_hour, integer_minute)
指定された日時のdatetime 値を返します。
- year:年を指定する整数式。
- month:1~12 までの月を指定する整数式。
- day:日にちを指定する整数式。
- hour:時間を指定する整数式。
- minute:分を指定する整数式。
SELECT SMALLDATETIMEFROMPARTS(2018, 2, 1, 1, 2); -- Result: 2018-02-01 01:02:00
STRTODATE(string,format)
指定された文字列値をパースし、対応する日時を返します。
- string:datetime 形式に変換される文字列値。
- format:最初の文字列入力を解釈する方法を説明するフォーマット文字列。 .NET date format syntax標準に従います。 UNIX、UNIXMILIS、TICKS、FILETICKS など、いくつかの特殊な形式も利用可能です。
SELECT STRTODATE('03*04*2020','dd*MM*yyyy'); -- Result: 4/3/2020
SYSDATETIME()
現在のタイムスタンプをデータベースシステムのdatetime 値として返します。この値はGETDATE およびCURRENT_TIMESTAMP と等しく、常にローカルタイムゾーンになります。
SELECT SYSDATETIME(); -- Result: 2018-02-01 03:04:05
SYSUTCDATETIME()
現在のシステム日時をUTC datetime 値として返します。GETUTCDATE と同じです。
SELECT SYSUTCDATETIME(); -- For example, if the local timezone is Eastern European Time (GMT+2) -- Result: 2018-02-01 05:04:05
TIMEFROMPARTS(integer_hour, integer_minute, integer_seconds, integer_fractions, integer_precision)
指定されたhour、minute、およびsecond のtime 値を指定した有効桁数で返します。
- hour:時間を指定する整数式。
- minute:分を指定する整数式。
- seconds:秒を指定する整数式。
- fractions:小数部分を表す整数式。
- precision :有効桁数を表す整数式。
SELECT TIMEFROMPARTS(1, 2, 3, 456, 3); -- Result: 01:02:03.456
TO_DAYS(date)
0000-00-01以降の日数を返します。1582-10-15以降の日付に対してのみ値を返します(グレゴリオ暦に基づく)。これはMYSQL TO_DAYS 関数と同等です。
- date:日付を指定するdatetime 文字列。
SELECT TO_DAYS('02-06-2015'); -- Result: 736000
WEEK(date)
指定されたdatetime に関連付けられた(その年の)週を返します。
- date:日付を指定するdatetime 文字列。
SELECT WEEK('02-17-2020 11:15:23'); -- Result: 8
YEAR(date)
指定されたdate の年を表す整数を返します。
- date:datetime 文字列。
SELECT YEAR('2018-02-01'); -- Result: 2018