あなたの映画力を試せる!POPLETA映画検定(無料) >>

初めて投稿します。
現在IT企業でSEとして働いてるのですが、プログラミング経験が浅く非常に困っているので助けてほしいです。

データベースから特定の条件に該当するデータを抽出したいのですがやり方がいまいちわかりません。
抽出するデータは住所で、ある日にちを条件文(where句)に設定してその日にちより前の日付であるデータを抽出したいのですが、データベースに格納されているこの日付がchar型でdata型ではないので、そのまま条件文で日にちを設定してもほしいデータが抽出されなくて困っています。
つまり2018/11/28より前のデータがほしいとなって条件文に’’列名1 <= 2018/11/28’’とやってもほしいデータが抽出されないのです。
わかりにくくて申し訳ないのですが、文字型の日付を比較してほしいデータを抽出するにはどうしたらいいのでしょうか。どなたか教えて頂きたいです。

A 回答 (1件)

例のように4桁/2桁/2桁で固定(足りない桁は0を補う 2018/05/03 )になっているのなら、


単純な文字列比較でも日付比較と同じ結果になるはずです。
('2017/03/01' < '2018/11/28' です)
なにか、別のところではないですか?


例えば「 条件文に’’列名1 <= 2018/11/28’’」とありますが、
これはどこに書いたもので、最終的なSQLではどうなるのですか?
列名1 <= 2018/11/28
だと
列名1 <= 2018 ÷ 11 ÷ 28
となってしまいますが、ちゃんと文字列になるようにしてますか?


どのデータベースシステムかが書いてありませんが(カテゴリ的には、MicrosoftのSQL Serverですが)
そのデータベース用んSQLを調べたら、 Cast とか To_date とか parse とか言った「文字列からdate型に変換する」関数があるのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q僕は特に得意な事も無く人と話すのも苦手で、どのような仕事をしようか悩んでいたのですが、並外れて得意で

僕は特に得意な事も無く人と話すのも苦手で、どのような仕事をしようか悩んでいたのですが、並外れて得意ではないけどパソコンは好きだな。と思い、プログラマーになりたいと思いました。
プログラマーのことを調べてみると、中高生のなりたい職業ランキングで1位にプログラマーがランクインしていました。
そこで質問なのですが、プログラマーって志望者が多すぎて飽和状態になっていたりするのでしょうか?
また、僕は今高三なのですが、正直あまり勉強しておらず偏差値50無いくらいです。
このような学歴がない人は相当ブラックに務めることになるというのは本当なのでしょうか?
質問がとても長いですが、どうかご回答お願いします。

Aベストアンサー

現役ですが、プログラマは本当に足りてないです。どこも欲しがってますね。
あと、業界自体が基本的にブラックです。労働時間の概念がおかしいよね。
鬱になる人は本当多い。離職率が高い仕事です。

あとね、これ勘違いしている人すっごい多いんだけど、
プログラマって人とのコミュニケーションめちゃくちゃ必要ですからね?
そういうの苦手だから、って理由で志望する人多いんですが、逆です。
そこだけ気になりました。

Qデータベースについてです

リレーショナルデータモデルとSQLの違いについて教えてください

初心者なのでよくわかっておりません

SQLの方が分かりやすく記述しやすいということなのでしょうか?

Aベストアンサー

リレーショナルデータベースのDMLがSQLです。
したがって、oracleでもCYBASEでもUDBでも基本操作はSQLで良いのです。

Qデータベースファイル(.db)を開きたいです。

あるファイルを開いてみたいですが、開けません。
プロパティーをみると
データベースファイルで 拡張子は、dbです、

開き方を教えてもらえないでしょうか。

ソフトが必要な場合は 使えるフリーソフトを紹介してもらえると
たすかります。

よろしく御願いします

Aベストアンサー

試しに、openpfficeのデータベースソフトで開いて見てください
http://www.openoffice.org/ja/

QSQL構文について教えてください

Access2010でデータの抽出を行っていますが、
以下のイメージ結果のクエリ(SQL文)についてご教示くださいませ。

■テーブルA
患者ID     日時    診療科   病棟   ステータス
AAAA 2018/3/22 08:00  内科   X病棟   入院
AAAA 2018/3/23 23:59  内科   X病棟   入院中
AAAA 2018/3/24 20:00  外科   X病棟   転科
AAAA 2018/3/24 23:59  外科   X病棟   入院中


■テーブルB
患者ID     記載日時    記載記事タイトル
AAAA      2018/3/24 21:00    手術同意

■結果
患者ID  日時        記載日時    記載記事タイトル  診療科   病棟  ステータス
AAAA 2018/3/24 20:00  2018/3/24 21:00   手術同意   外科  X病棟  転科   

入院の履歴情報をもとにカルテ記載を行ったときの患者の診療科や病棟を求めようとしています。
よろしくお願いいたします。

Access2010でデータの抽出を行っていますが、
以下のイメージ結果のクエリ(SQL文)についてご教示くださいませ。

■テーブルA
患者ID     日時    診療科   病棟   ステータス
AAAA 2018/3/22 08:00  内科   X病棟   入院
AAAA 2018/3/23 23:59  内科   X病棟   入院中
AAAA 2018/3/24 20:00  外科   X病棟   転科
AAAA 2018/3/24 23:59  外科   X病棟   入院中


■テーブルB
患者ID     記...続きを読む

Aベストアンサー

SELECT B.患者ID, A.日時, B.記載日時, B.記載記事タイトル, A.診療科, A.病棟, A.[ステータス]
FROM テーブルB AS B INNER JOIN テーブルA AS A ON B.患者ID = A.患者ID
WHERE (((A.日時)=(SELECT MAX(C.日時) FROM テーブルA AS C
WHERE C.患者ID = A.患者ID AND C.日時 <= B.記載日時)));

QSQLの副問い合わせ IN演算子とEXIST演算子の違いは何ですか?どちらも結果は同じですよね?

SQLの副問い合わせ
IN演算子とEXIST演算子の違いは何ですか?どちらも結果は同じですよね?

Aベストアンサー

SQLの効率は最適化エンジンによって決まります。
一般にexistsの方が最適化しやすくinは劣るとされています。
個人的な見解ですがそもそもinはデータの羅列用の書式ですから
データを結合する場合も考え方はor処理をしているのがボトルネックなのでしょう。

a in (1,2,3) → a=1 or a=2 or a=3

inにselect句を指定してもやっていることは変わらないので相関関係のないまま
検索をすると冗長な処理になりスピードが出ないのだと思います。

一方existsはテーブル同士(結合を含む)の結合を前提に処理をするので
相関関係がはっきりする分最適化がききやすいのだと思います

RDBのエンジンは日々改良が重ねられているので、inでも遜色のない
パフォーマンスをだせるものもあるので、昔ほどはパフォーマンスの差異は
なくなってきていると思いますよ。

Qこのプログラミングの問題がいくら考えてもわかりません。for文とif文を組み合わせて使うと言われたの

このプログラミングの問題がいくら考えてもわかりません。for文とif文を組み合わせて使うと言われたのですが、よろしければ教えてください

Aベストアンサー

No.1です、
念のための追加です。

日本語で「〇〇の値が××だったら、、、。そうでなかったら~。」といった表現で書かれたものが多くのプログラミング言語ではifを用いた処理になります。
同じく「〇〇の値が××になるまで、、、を繰り返す。」といった表現で書かれたものfor文やwhile文を用いた処理になります。

参考まで。

Q娘の学校から出た暗号解読ですが、全く分かりません。助けてください。

色々とツールを使ってみましたが分かる方がいれば教えてください。
XOR the two following UTF8 strings together:
Yar har, fiddle di dee
and
Being a pirate is all right with me

Take the SHA-1 hash of your answer, to get the flag.

Aベストアンサー

書いてあるとおりやってみた結果は?

1文字目は YとB のUTF8コードをXORした値で、何になるのか
2文字目は、 aとe  のUTF8コードをXORした値で、何になるのか
:

それを示してください。その上で、その先を考えましょう。

QSQLサーバで和暦から西暦に変換したい

SQLサーバで和暦のデータを西暦に変換する方法を教えていただけないでしょうか。

Webで調べたら、西暦→和暦は多く見受けられたのですが、、
和暦→西暦は見当たらず、、

GYYMMDD→YYYYMMDD に変換したいと考えています。

よろしくお願い致します。

Aベストアンサー

CAST(CAST(SUBSTRING(和暦,2,6) AS INT)
+ CASE SUBSTRING(和暦,1,1)
WHEN 'M' THEN 18670000
WHEN 'T' THEN 19110000
WHEN 'S' THEN 19250000
WHEN 'H' THEN 19880000
ELSE 20180000 END AS VARCHAR(8))

とか

QsqlserverでUPDATEできません

お世話になります。
件名ついてご教授ください。
あるテーブル(以下Aテーブル)上で金額の集計をUPDATE文を実行したのですが、更新されずに困っています。SQL文が誤っているのかと思いましたが別テーブル(以下Bテーブル)で試したところ問題なく更新されました。
金額は両方とも整数型(int)で定義しているため差異はない認識です。
データ数はA…10万件超、B…10件前後となっています。
何が原因かわからず困っています。

Aベストアンサー

http://www.remember-the-time.xyz/2013/08/sql-server-update-delete.html
これじゃないですか?

SUM() over 〜 といったウインドウ関数は、元の行をまとめたりしません。
この例では、 キー,年月 が同じ行が複数あれば、その行数だけ同じ行が存在します。
それを結合させれば、 テーブルの1行に対して、Aの複数行で更新しようとしてエラーになります。

テーブル
001 201804 10,000 5,000 10,000 5,000
001 201804 20,000 6,000 10,000 5,000
だったら
A
001 201804 30,000 11,000
001 201804 30,000 11,000
になって、
テーブル1行目 + A1行目
テーブル1行目 + A2行目
テーブル2行目 + A1行目
テーブル2行目 + A2行目


この場合だったら、ウィンドウ関数ではなく、集約関数(GROUP BYでまとめる)のSUMを使えばいいのでは。



個人としては、テーブルの設計からやりなおしだと思います。

http://www.remember-the-time.xyz/2013/08/sql-server-update-delete.html
これじゃないですか?

SUM() over 〜 といったウインドウ関数は、元の行をまとめたりしません。
この例では、 キー,年月 が同じ行が複数あれば、その行数だけ同じ行が存在します。
それを結合させれば、 テーブルの1行に対して、Aの複数行で更新しようとしてエラーになります。

テーブル
001 201804 10,000 5,000 10,000 5,000
001 201804 20,000 6,000 10,000 5,000
だったら
A
001 201804 30,000 11,000
001 201804 30,000 11,000
に...続きを読む

QSQL Server 縦方向のデータを列方向に変換したい

実際にこういうデータが欲しいわけではなくて例として挙げています。

私が都道府県を訪れた回数が一定期間ごと(月単位等)にデータベースに格納されています。

期間 都道府県 回数
1  東京   12
1  大阪   4
1  福岡   5
2  東京   11
2  大阪   10

上記のデータを
期間 東京 大阪 福岡
1  12  4  5
2  11  10

のように一部データを列方向に変換したいのです。
例では都道府県としていますが、実際には都道府県に該当する列には上限がありません。

Microsoft SQL Serverでどのように記述すればいいか分かりません。。

Aベストアンサー

それはSQL ServerというDBMSの中で実施することではなく、そういうデータ表現が必要なプレゼンテーション層となるソフトウェアの責任でそういう見え方に加工すべきではないでしょうか。


人気Q&Aランキング