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

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

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

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

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

Q&A

1回答

1112閲覧

c# Datatime型の時間を指定しない場合の挙動

退会済みユーザー

退会済みユーザー

総合スコア0

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

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

0グッド

0クリップ

投稿2020/07/23 02:59

前提・実現したいこと

例えばtime stamp without time zoneを持つTable Aがあったとします。

Table A

idtime (time stamp without time zone)
12020-07-07 10:30:59.875902

これのYYYY/MM/DDだけを検索条件とし、レコード抽出したい。

イメージ的にはユーザーが、年と月を選べば、その条件にあったリストを表示するイメージです。

Entity FrameworkのO/Rマッパーを使用しています。
DBはPostgresSQLです。

発生している問題・エラーメッセージ

例えばユーザーから2020/07という入力値を取得し、DataTime型にキャストした瞬間、DBは区切り文字が「-」なのに対し、キャストした瞬間「/」になってしまうので、うまく検索できなくて困っております。

どなたかご教授、お願いできますでしょうか。

足りない情報がございましたら都度、提供させていただきます。

処理クラス

public class RegistDateValueObject { private DateTime _registDate { get; set; } public RegistDateValueObject(DateTime registDate) { _registDate = registDate; } }

実行クラス

var Entity= new Entity() { registDate = new RegistDateValueObject(2017/07) };

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

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

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

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

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

Zuishin

2020/07/23 03:19

データベース上の型が日付時刻型なのか文字列型なのかで検索方法が異なります。日付時刻型を文字列で検索するのはナンセンスです。その場合は、検索したい日付以上、検索したい日付の次の日未満を検索してください。
退会済みユーザー

退会済みユーザー

2020/07/23 06:53

すいません、至極全うですね。 普通に出来ました。O/Rマッパーに変な概念を持ってしまい、思考がずれてしまっていました。 ありがとうございました。
Zuishin

2020/07/23 07:06

自己解決してください。
guest

回答1

0

DBは区切り文字が「-」なのに対し

それは、DB ツールか何かで見た表示上の話ではないですか?
問題の列の型が日付型なら、DB は文字列ではなく数値として日時を保存します。

DataTime型にキャストした瞬間

DateTime 型も、日時を数値で保持しています。
DateTime 型と「日付の文字列」を比較しようとしているからうまくいかないのではないでしょうか?

具体的なコードが書かれていないので想像になりますが、DateTime 型同士を比較すればいいような気がします。

投稿2020/07/24 02:48

hidori

総合スコア403

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問