SQLの日付(日付)2019年10月17日午前22時17分26秒
我々は、日付を扱う場合には、おそらく最も困難な日付形式が挿入されることを保証するタスク、およびデータベースの試合で日付列の形式です。
日付が一部保存されている場合、クエリはあまり問題になることはありません。それは時間を部分に来る場合でも、状況は少し複雑です。
ここでは、組み込みの日付処理機能を見てみましょう
SQL Serverの日付関数
ここでは、SQL Serverの中で最も重要な組み込みの日付関数は、次のとおりです。
1、GETDATE()は、現在の日付と時刻を返します
構文:
GETDATE()
以下は、SELECT文です。
日時AS GETDATE()を選択
結果は以下の通りであります:
注:ミリ秒以上の時間。
2、DATEPARTは()日付/時刻の別々の部分を返します
構文:
DATEPART(日付要素、日付)
日付パラメータは、有効な日付式です。DATEPARTパラメータは、次の値であってもよいです。
DATEPART | 略語 |
年 | YY、YYYY |
四半期 | QQは、Q |
月 | うーん |
当日に | 家、 |
日 | DD、D |
周 | 週、WW |
週 | ワット、DW |
時間 | HH |
分 | 私のn |
第2 | SS、S |
ミリ秒 | ミズ |
マイクロ秒 | MCS |
NS | NS |
例:
選択DATEPART(YY、GETDATE());
3、DATEADD()日付指定された時間間隔を加算または減算します
構文:
DATEADD(日付要素、数字、日付)
日付パラメータは、有効な日付式です。番号は、追加したい間隔の数であり、将来の日付のため、数が正の数で、最後の時間のために、番号が否定的です。
上記のパラメータと一致したdatepartパラメータ値、と私はコピーされません
例:
DATEADDを選択します(日、30、GETDATE());
結果:
4、DATEDIFF()は、2つの日付の間の時間を返します。
構文:
DATEDIFF(DATEPART、STARTDATE、終了日)
STARTDATE引数が正当とENDDATE日付式です。同様に上記の日付要素のパラメータ
例:
DATEDIFF(日、「2019年10月17日」、「2020年1月24日」)を選択します。
結果:
5、CONVART()は、異なる形式の日付/時刻データを表示します
構文:
CONVERT(DATA_TYPE(長さ)、表現、スタイル)
値 | 説明 |
DATA_TYPE(長さ) | (オプションの長さ)が所定のターゲット・データ・タイプ。 |
表します | 規定値を変換する必要があります。 |
スタイル | 出力形式の所定の日付/時間 |
次の表は、文字データにスタイル値のdatetime型またはsmalldatetime型の変換を示しています。
値(世紀YY) | 値(世紀YYYY) | 入力/出力 | 標準 |
- | 0または100 | 月のDD YYYYのHH:miAM(またはPM) | デフォルト |
1 | 101 | MM / DD / YY | 米国 |
2 | 102 | YY.MM.DD | ANSI |
3 | 103 | DD / MM / YY | 英/仏 |
4 | 104 | DD.MM.YY | ドイツ人 |
5 | 105 | DD-MM-YY | ltalian |
6 | 106 | DDの月のYY | |
7 | 107 | 月のDD、YY | |
8 | 108 | HH:mm:ssの | |
- | 9または109 | 月のDD YYYYのHH:MI:SS:mmmAM(またはPM) | デフォルト+ミリ秒 |
10 | 110 | MM-DD-YY | 米国 |
11 | 111 | YY / MM / DD | 日本 |
12 | 112 | YYMMDD | ISO |
- | 13または113 | DD月のYYYYのHH:MI:SS:MMM(24時間) | |
14 | 114 | HH:MI:SS:MMM(24時間) | |
- | 20または120 | YYYY-MM-DD HH:MI:SS(24時間) | |
- | 21,121 | YYYY-MM-DD HH:MI:ss.mmm(24時間) | |
- | 126 | YYYY-MM-DD T HH:MI:ss.mmm(スペースなし) | ISO8601 |
- | 130 | DD月のYYYYのHH:MI:SS:mmmAM | 聖 |
- | 131 | DD / MM / YY HH:MI:SS:mmmAM | 聖 |
例:
次のスクリプトは、異なるフォーマットを表示するためにCONVERT()関数を使用します。現在の日付/時刻を取得するために、GETDATE()関数を使用します
CONVERT(VARCHAR(19)、GETDATE ()) CONVERT(VARCHAR(10)、GETDATE()、10 ) CONVERT(VARCHAR(10)、GETDATE()、110 ) CONVERT(VARCHAR(11)、GETDATE()、6 ) CONVERT(VARCHAR(11)、GETDATE()、106 ) CONVERT(VARCHAR(24)、GETDATE()、113)
結果は以下の通りであります:
11月04 2011年 11:45 PM 11 - 04 - 11 11 - 04 - 2011年 04 11月11 04 11月2011年 04 11月2011年 11:45:34:243
PostgreSQLの日付/時刻関数と演算子
時間内の特定postgreでは、オペレータは、基本的な数プラス+、減算を実行することができる - また乗算* /操作
日付/時刻演算子
演算子 | 例 | 結果 |
+ | 選択日付「2019年10月18日」+整数「7」 | 日付「2019年10月25日」 |
+ | 選択日付「2019年10月18日」+間隔「1時間」 | タイムスタンプ「2019年10月18日1時00分00秒」 |
+ | select date '2019-10-18' + time '03:00' | timestamp '2019-10-18 03:00:00' |
+ | select interval '1 day' + interval '1 hour' | interval '1 day 01:00:00' |
+ | select timestamp '2019-10-18 01:00' + interval '23 hours' | timestamp '2019-10-19 00:00:00' |
+ | select time '01:00' + interval '3 hours' | time '04:00:00' |
- | - interval '23 hours' | interval -23:00:00 |
- | select date '2019-10-18' - date '2019-10-15' | intrger 3(days) |
- | select date '2019-10-18' - integer '7' | date '2019-10-11' |
- | date '2001-09-28' - interval '1 hour' | timestamp '2019-10-17 23:00:00' |
- | time '05:00' - time '03:00' | interval '02:00:00' |
- | time '05:00' - interval '2 hours' | time '03:00:00' |
- | 選択したタイムスタンプ「2019年10月18日23:00」 - 間隔'23時間の | タイムスタンプ「2019年10月18日午後12時00分00秒」 |
- | 間隔「1時間」 - 間隔「1日」を選択 | 間隔 '1日-01:00:00' |
- | タイムスタンプ「2001年9月29日3時00分」 - タイムスタンプ「2001年9月27日午前12時00分」 | 間隔「2日夜03時00分00秒」 |
* | 900 *間隔 '1秒' | 間隔'00:15:00' |
* | 21 *期間「1日」を選択 | 間隔'21日間の |
* | 倍精度「3.5」*間隔「1時間」を選択 | 間隔'03:30:00' |
/ | 間隔「1時間」/倍精度「1.5」 | 間隔'00:40:00' |
日付/時刻関数
機能 | 戻り値の型 | 説明 | 例 | 結果 |
年齢(タイムスタンプ、 タイムスタンプ) | 間隔 | パラメータを減算した後、年と月使用して、スペースだけではなく、使用した結果の「シンボル」 | select age(timestamp '2019-10-18', timestamp '1998-07-31') | "21 years 2 mons 18 days" |
age(timestamp) | interval | 从current_date 减去参数后的结果(在午夜) |
select age(timestamp '1998-07-31') | "21 years 2 mons 18 days" |
clock_timestamp() | timestamp with time zone | 实时时钟的当前时间戳(在语句执行时变化) | select clock_timestamp() | "2019-10-18 21:47:03.880667+08" |
current_date | date | 当前的日期; | select current_date | "2019-10-18" |
current_time | time with time zone | 当前的时间; | select current_time | "21:50:35.168911+08:00" |
current_timestamp | timestamp with time zone | 当前事务开始时的时间戳; | select current_timestamp | "2019-10-18 21:49:17.912353+08" |
date_part(text, timestamp) | double precision | 获取子域(等效于extract ); |
date_part('hour', timestamp '2001-02-16 20:38:40') | 22 |
date_part(text, interval) | double precision | 获取子域(等效于extract ); |
date_part('month', interval '2 years 3 months') | 3 |
date_trunc(text, timestamp) | timestamp | 截断成指定的精度; | select date_trunc('hour', timestamp '2019-10-18 22:55:40') | "2019-10-18 22:00:00" |
date_trunc(text, interval) | interval | 截取指定的精度, | date_trunc('hour', interval '2 days 3 hours 40 minutes') | "2 days 03:00:00" |
extract (field from timestamp) |
double precision | 获取子域; | select extract(hour from timestamp '2019-10-18 22:58:40') | "22" |
extract (field from interval) |
double precision | 获取子域; | select extract(month from interval '2 years 3 months') | "3" |
isfinite(date) | boolean | 测试是否为有穷日期(不是 +/-无穷) | select isfinite(date '2019-10-18') | true |
isfinite(timestamp) | boolean | 测试是否为有穷时间戳(不是 +/-无穷) | select isfinite(timestamp '2001-02-16 21:28:30') | true |
isfinite(interval) | boolean | 测试是否为有穷时间间隔 | select isfinite(interval '4 hours') | true |
justify_days(interval) | interval | 按照每月 30 天调整时间间隔 | select justify_days(interval '35 days') | "1 mon 5 days" |
justify_hours(interval) | interval | 按照每天 24 小时调整时间间隔 | select justify_hours(interval '27 hours') | "1 day 03:00:00" |
justify_interval(interval) | interval | 使用justify_days 和justify_hours 调整时间间隔的同时进行正负号调整 |
select justify_interval(interval '1 mon -1 hour') | "29 days 23:00:00" |
localtime | time | 当日时间; | select localtime | "22:29:47.906458" |
localtimestamp | timestamp | 当前事务开始时的时间戳; | select localtimestamp | "2019-10-18 22:30:51.573436" |
make_date(year int, month int, day int) | date | 为年、月和日字段创建日期 | make_date(2013, 7, 15) | 2013-07-15 |
now() | timestamp with time zone | 当前事务开始时的时间戳; | select now() | "2019-10-18 22:33:19.559465+08" |
statement_timestamp() | timestamp with time zone |
实时时钟的当前时间戳; | statement_timestamp() | "2019-10-18 22:34:50.077578+08" |
timeofday() | text | 与clock_timestamp 相同,但结果是一个text 字符串; |
select timeofday() | "Fri Oct 18 22:35:41.196317 2019 HKT" |
transaction_timestamp() | timestamp with time zone | 当前事务开始时的时间戳; | select transaction_timestamp() | "2019-10-18 22:36:42.310184+08" |