質問編集履歴

4

誤字

2020/08/20 14:03

投稿

screwsight
screwsight

スコア9

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  (1) [Oracle Live SQL](https://livesql.oracle.com/)で以下のSQLを実行してDATE型の列を持つsampleテーブルを作成
16
16
 
17
- ```oracle sql
17
+ ```sql
18
18
 
19
19
  CREATE TABLE sample(
20
20
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  (2-1)以下の各SQLを実行してレコードを登録
30
30
 
31
- ```oracle sql
31
+ ```sql
32
32
 
33
33
   INSERT INTO sample VALUES ('15-Apr-00');
34
34
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  (2-2)以下の各SQLを実行してレコードを登録しようとしたがエラーで登録できなかった。
44
44
 
45
- ```oracle sql
45
+ ```sql
46
46
 
47
47
  INSERT INTO sample VALUES ('15-Apr-00 00:00:00');
48
48
 
@@ -68,7 +68,7 @@
68
68
 
69
69
         また、sampleテーブルのcolumnsを確認するとLengthは7で「 00:00:00」は格納されていなかった。
70
70
 
71
- ```oracle sql
71
+ ```sql
72
72
 
73
73
  SELECT * FROM sample WHERE regdate LIKE '%00%';
74
74
 

3

誤字

2020/08/20 14:03

投稿

screwsight
screwsight

スコア9

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,9 @@
50
50
 
51
51
  ```
52
52
 
53
- ```エラー文:
53
+ エラー文は以下
54
+
55
+ ```
54
56
 
55
57
  date format picture ends before converting entire input string ORA-06512: at "SYS.DBMS_SQL", line 1721
56
58
 

2

指摘に合わせてコードの表記修正、LIVE SQLと書籍のリンクを追加

2020/08/20 14:01

投稿

screwsight
screwsight

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  oracleのDATE型は日付だけでなく時刻の情報も格納しているとのことですが、時刻を登録できません。
2
2
 
3
- 黒本には「DATE型:日付、時刻を含む固定長7バイトの日付データ型。4桁年、月、日、時、分、秒を格納します。」とありますが、年月日しか格納できませんでした。
3
+ [黒本(12cSQL基礎 初版2刷)](https://www.shoeisha.co.jp/book/detail/9784798139883)のp.276には「DATE型:日付、時刻を含む固定長7バイトの日付データ型。4桁年、月、日、時、分、秒を格納します。」とありますが、年月日しか格納できませんでした。
4
4
 
5
5
 
6
6
 
@@ -12,23 +12,23 @@
12
12
 
13
13
  【したこと】
14
14
 
15
- (1) Oracle Live SQLで以下のSQLを実行してDATE型の列を持つsampleテーブルを作成
15
+ (1) [Oracle Live SQL](https://livesql.oracle.com/)で以下のSQLを実行してDATE型の列を持つsampleテーブルを作成
16
16
 
17
+ ```oracle sql
17
18
 
19
+ CREATE TABLE sample(
18
20
 
19
-  CREATE TABLE sample(
21
+ regdate date
20
22
 
21
- regdate date
23
+ );
22
24
 
23
- );
25
+ ```
24
-
25
-
26
26
 
27
27
 
28
28
 
29
29
  (2-1)以下の各SQLを実行してレコードを登録
30
30
 
31
-
31
+ ```oracle sql
32
32
 
33
33
   INSERT INTO sample VALUES ('15-Apr-00');
34
34
 
@@ -36,19 +36,25 @@
36
36
 
37
37
   INSERT INTO sample VALUES (sysdate);
38
38
 
39
-  
39
+ ```
40
40
 
41
41
 
42
42
 
43
43
  (2-2)以下の各SQLを実行してレコードを登録しようとしたがエラーで登録できなかった。
44
44
 
45
-      エラー文はどちらも「date format picture ends before converting entire input string ORA-06512: at "SYS.DBMS_SQL", line 1721」
45
+ ```oracle sql
46
46
 
47
+ INSERT INTO sample VALUES ('15-Apr-00 00:00:00');
47
48
 
49
+ INSERT INTO sample VALUES ('15-Apr-01 00:00:00');
48
50
 
49
-  INSERT INTO sample VALUES ('15-Apr-00 00:00:00');
51
+ ```
50
52
 
53
+ ```エラー文:
54
+
51
-  INSERT INTO sample VALUES ('15-Apr-01 00:00:00');
55
+ date format picture ends before converting entire input string ORA-06512: at "SYS.DBMS_SQL", line 1721
56
+
57
+ ```
52
58
 
53
59
 
54
60
 
@@ -60,6 +66,8 @@
60
66
 
61
67
         また、sampleテーブルのcolumnsを確認するとLengthは7で「 00:00:00」は格納されていなかった。
62
68
 
69
+ ```oracle sql
63
70
 
71
+ SELECT * FROM sample WHERE regdate LIKE '%00%';
64
72
 
65
- SELECT * FROM sample WHERE regdate LIKE '%00%';
73
+ ```

1

したことを追記、合わせて質問内容を変更

2020/08/20 14:00

投稿

screwsight
screwsight

スコア9

test CHANGED
@@ -1 +1 @@
1
- oracleでDATE型のレコードを検索するとき時刻は抽出条件に含まれるか
1
+ oracleでDATE型のレコードに時刻登録する方法
test CHANGED
@@ -1 +1,65 @@
1
+ oracleのDATE型は日付だけでなく時刻の情報も格納しているとのことですが、時刻を登録できません。
2
+
3
+ 黒本には「DATE型:日付、時刻を含む固定長7バイトの日付データ型。4桁年、月、日、時、分、秒を格納します。」とありますが、年月日しか格納できませんでした。
4
+
5
+
6
+
1
- oracleのDATE型は日付だけでなく時刻の情報も格納しているとのことですが、DD-MON-RR形式で日付を格納している列に対して「SELECT 列名 FROM テーブル名 WHERE 列名 LIKE '%00%'で検索すると、RR=00である2000年のレコードだけでなく00:00:00やその他00を時刻に含む他年度レコードも取得してしまうのでしょうか?
7
+ 「2000-01-01 00:00:00や「2020-08-20 21:24:00」、「01-JAN-00 00:00:00ような形で格納されると思っていたですが違うのでしょうか
8
+
9
+
10
+
11
+
12
+
13
+ 【したこと】
14
+
15
+ (1) Oracle Live SQLで以下のSQLを実行してDATE型の列を持つsampleテーブルを作成
16
+
17
+
18
+
19
+  CREATE TABLE sample(
20
+
21
+ regdate date
22
+
23
+ );
24
+
25
+
26
+
27
+
28
+
29
+ (2-1)以下の各SQLを実行してレコードを登録
30
+
31
+
32
+
33
+  INSERT INTO sample VALUES ('15-Apr-00');
34
+
35
+  INSERT INTO sample VALUES ('15-Apr-01');
36
+
37
+  INSERT INTO sample VALUES (sysdate);
38
+
39
+  
40
+
41
+
42
+
43
+ (2-2)以下の各SQLを実行してレコードを登録しようとしたがエラーで登録できなかった。
44
+
45
+      エラー文はどちらも「date format picture ends before converting entire input string ORA-06512: at "SYS.DBMS_SQL", line 1721」
46
+
47
+
48
+
49
+  INSERT INTO sample VALUES ('15-Apr-00 00:00:00');
50
+
51
+  INSERT INTO sample VALUES ('15-Apr-01 00:00:00');
52
+
53
+
54
+
55
+ (3)以下のSQLを実行。
56
+
57
+  想定結果:時刻はデフォルトで「00:00:00」が登録されるはずなので「15-Apr-00」「15-Apr-01」が抽出される。
58
+
59
+  実際の結果:「15-Apr-00」の1行だけ表示された。
60
+
61
+        また、sampleテーブルのcolumnsを確認するとLengthは7で「 00:00:00」は格納されていなかった。
62
+
63
+
64
+
65
+ SELECT * FROM sample WHERE regdate LIKE '%00%';