質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

305閲覧

MySQL Shell for VSCodeでdate型の列にnullをインサートしたら1970/01/01と表示される

kusa00001

総合スコア2

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2024/06/16 13:53

実現したいこと

NULL と設定したセルは空欄にしたい

発生している問題・分からないこと

SQL

1INSERT INTO Products VALUES('0003', 'カッターシャツ', '衣服', 4000, 2800, NULL);

においてDATE型の列にnullをインサートしているのですが、実際にテーブルを出力してみると
1970/01/01と表示されてしまいます。
イメージ説明

該当のソースコード

SQL

1# tableの作成 2CREATE TABLE Products 3(product_id CHAR(4) NOT NULL, 4product_name VARCHAR(100) NOT NULL, 5product_category VARCHAR(32) NOT NULL, 6selling_price INTEGER , 7purchase_price INTEGER, 8registered_date DATE, 9PRIMARY KEY (product_id)); 10 11START TRANSACTION; 12 13INSERT INTO Products VALUES('0001', 'Tシャツ', '衣服', 1000, 500, '2009-09-20'); 14INSERT INTO Products VALUES('0002', '穴あけパンチ', '事務用品', 500, 320, '2009-09-11'); 15INSERT INTO Products VALUES('0003', 'カッターシャツ', '衣服', 4000, 2800, NULL); 16INSERT INTO Products VALUES('0004', '包丁', 'キッチン用品', 3000, 2800, '2009-09-20'); 17INSERT INTO Products VALUES('0005', '圧力鍋', 'キッチン用品', 6800, 5000, '2009-01-15'); 18INSERT INTO Products VALUES('0006', 'フォーク', 'キッチン用品', 500, NULL, '2009-09-20'); 19INSERT INTO Products VALUES('0007', 'おろしがね', 'キッチン用品', 800, 790, '2009-04-28'); 20INSERT INTO Products VALUES('0008', 'ポールペン', '事務用品', 100, NULL, '2009-11-11'); 21 22COMMIT;

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

UPDATEを用いて改めてnullに更新したり、CREATE TABLEの段階でdefaultをnullにしたりしましたが改善はみられませんでした

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KOZ6.0

2024/06/17 04:23 編集

Integer の部分は空で出力されてますよね? 1970/01/01 といえば FILETIME 構造体の初期値だったかと思います。 おそらく表示の不具合なので設定でどうにもならなければ MySQL Workbench など他のツールを使って確認するしかないのでは?
yambejp

2024/06/17 11:12

mysqlのバージョンはいくつでしょう?
kusa00001

2024/06/17 11:47

mysql --version mysql Ver 14.14 Distrib 5.7.44, for osx10.19 (x86_64) using EditLine wrapper mysqlのバージョンになります
guest

回答1

0

とりあえず

SQL

1 DESCRIBE products

で、registered_date のNULLがYESになっていることをご確認ください
insertはnullではなくdefaultを指定してはいかがでしょうか?

SQL

1INSERT INTO Products VALUES('0003', 'カッターシャツ', '衣服', 4000, 2800, default);

投稿2024/06/17 03:41

yambejp

総合スコア116269

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kusa00001

2024/06/17 11:52

ご返信頂きありがとうございます。 アドバイスの通りにやってみたのですが、1970/01/01のままでした...
kusa00001

2024/07/03 13:24

先日アップデートがあり修正されていました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問