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

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

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

dateは、date型や日付に関する関数や処理についてのタグです

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2914閲覧

postgreSQLからJavaへの日付データ出力

kumakura

総合スコア8

date

dateは、date型や日付に関する関数や処理についてのタグです

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/03/30 08:14

前提・実現したいこと

勉強を始めたばかりの初心者です。
Java(jsp、サーブレット)にてスケジュール管理のシステムを作成しています。

PostgreSQL内の日付データを指定し、出力したいのですがうまくいきません。

ご回答いただけると助かります、よろしくお願いします。

Javaコード

Java

1package test; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.sql.Statement; 8 9 10public class Top_calendar { 11 12 public static void main(String[] args) { 13 // TODO 自動生成されたメソッド・スタブ 14 15 //データベースへの接続準備 16 Connection conn = null; 17 String url = "-省略-"; 18 String user = "-省略-"; 19 String password = "-省略-"; 20 21 try{ 22 23 //データベースへ接続 24 conn = DriverManager.getConnection(url, user, password); 25 26 //ステートメントの追加 27 Statement stmt = conn.createStatement(); 28 29 //日付を決定 30 int day = 1; 31 int month = 3; 32 int year = 2020; 33 34 // SQLからデータを抽出 35 ResultSet rs = stmt.executeQuery("select * from calendar where day "+year+"-"+month+"-"+day); 36 37 // 結果の表示 38 while (rs.next()) { 39 System.out.println(rs.getString("day")); 40 } 41 42 //データベースを閉じる 43 stmt.close(); 44 45 }catch (SQLException e){ 46 47 System.out.println("データベースにつなげません"); 48 System.out.println("SQLException:" + e.getMessage()); 49 } 50 } 51 52}

PostgreSQL内のデータ

データベース内には以下のようなデータが入っています。
※select分のwhereで使用したいのはカラム「day」になります。

id | day | starttime | lasttime | title | detail
----+------------+-----------+----------+-------+--------
1 | 2020-03-01 |    |  | s   |
2 | 2020-03-01 | 12:30:00 |   | f   |

エラーメッセージ

データベースにつなげません
SQLException:ERROR: "2020"またはその近辺で構文エラー
位置: 34

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

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

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

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

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

m.ts10806

2020/03/30 08:35

「データベースにつなげない」ではないと思います。エラーコードで調べてみましたか?
guest

回答2

0

java

1 ResultSet rs = stmt.executeQuery("select * from calendar where day "+year+"-"+month+"-"+day); 2

で発行しているselect文を確認してみよう。

java

1 final String sql = "select * from calendar where day "+year+"-"+month+"-"+day; 2 System.out.println(sql); 3 ResultSet rs = stmt.executeQuery(sql);

そして、そのselect文を、psqlで実行してみよう。同じエラーになると思いますよ。

投稿2020/03/30 08:20

編集2020/03/30 08:21
shiketa

総合スコア4061

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

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

0

ベストアンサー

生成されているSQLは

SQL

1 where day 2020-03-01

のようになっていて先ずは比較演算子がありません。
少なくとも以下の様にならないと駄目です。

SQL

1 where day = '2020-03-01'

投稿2020/03/30 09:09

sazi

総合スコア25327

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

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

kumakura

2020/03/31 00:20

比較演算子の漏れに気付いていませんでした。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問