次の方法で共有

ExcelPowerQueryにてODataソース接続時のSQLコマンド文字列での日付絞り込み方法

Anonymous
2019-07-04T01:05:41+00:00

ODATAからのデータ取得時に入力日付の値を使って絞り込んだデータを取得したいと思っています。

【利用環境】

Windows10Pro

Excel2010

PowerQuery(PowerQuery_2.59.5135.201 (32-bit) [ja-JP].msiをインストール済み)

対象データベース:OData(Dynamics 365Business Central)

【操作方法】

PowerQueryにてOData接続。

その後に、Excelメニュー⇒データ⇒接続⇒クエリ名称のプロパティ⇒定義画面にて、

コマンドの種類:SQL / コマンド文字列:SELECT * FROM [xxxxxxx]が初期表示されます。

このSQL文を変更して、入力日付を使ってWhere文にて絞り込もうとしています。

【質問内容】

下記SQL文にて、数値/文字列は可能でした。

数値はSELECT * FROM [xxxxxxx] WHERE Item_Num > 123 and  Item_Num > 999

文字列はSELECT * FROM [xxxxxxx] WHERE Item_Name = 'ABC'

で可能です

しかしながら、日付の範囲指定(Where)ができません。

日付の例はSELECT * FROM [xxxxxxx] WHERE Item_Date > '2019/01/01'

(Expression.Error 演算子<を型TEXTおよびDateに適用できません。)

Between/Likeなども利用できないようですので、使える構文が限られている感じですが、

単純な抽出ですので、指定方法が間違っているだけと思っています。

指定方法の例文、若しくは利用可能構文についての文献など教えて頂けないでしょうか。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

8 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-07-05T02:04:09+00:00

    有難う御座います。

    残念ながらダメでした。

    コマンド'SELECT * FROM [Table_Name] where Item_Date > DATE'1999-09-08''はサポートされていません。

    コマンド'SELECT * FROM [Table_Name] where Item_Date > TIME'17:20:01''はサポートされていません。

    コマンド'SELECT * FROM [Table_Name] where Item_Date > TIMESTAMP'1999-09-08 17:20:01''はサポートされていません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2019-07-05T01:35:14+00:00

    課題DBに関する知識は皆無なので、アテズッポウですが...

    •日付定数 DATE'1999-09-08'

    •時刻定数 TIME'17:20:01'

    •時刻印定数 TIMESTAMP'1999-09-08 17:20:01'

    といった記述はいかがでしょうか?

    都合

    SELECT * FROM [品目元帳明細] where Posting_Date > DATE'2019-01-01'

    といった記述です。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2019-07-04T09:31:36+00:00

    ダメでしたか、

    SQLで、、考えてみるとMySqlだったかも、昔の記憶で、2019/01/01は使えるはずなのに

    示した原因で不具合になった事があったので、パット読みで返してしまいました。

    現在、環境がないので検証が出来ませんので、情報を書きます。

    SQL SELECT構文などは、一般サイトの https://rfs.jp/sb/sql/s03/03\_2-2.html#WHERE

    などに案内があります。ただ、間違いがあるようには、思えないのですが。

    (私は、現在SQLからだいぶ離れていますのであてにならないかと)

    始めに案内するべき事ですが、すみません。

    質問内容から判断して、より専門的な開発者、技術者が多く集まる

    Microsoft Developer Network MSDNフォーラム

    IT プロフェッショナル、開発者が多く参加されている

    Microsoft Technet  フォーラム

    などに、質問されるのが良いと思います。

    リンクは、トップページなのでフォーラムを選び、該当するフォーラム(SQL Serverかな)に

    質問された方が解決が早いかもしれません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2019-07-04T03:27:58+00:00

    ご回答有難う御座います。

    申し訳けありません。色々とやってみましたがダメでした。

    SELECT * FROM [品目元帳明細] where Posting_Date > 2019-01-01

    ([Expression.Error] 演算子<を型TEXTおよびDateに適用できません。)

    SELECT * FROM [品目元帳明細] where Posting_Date > '2019-01-01'

    ([Expression.Error] 演算子<を型TEXTおよびDateに適用できません。)

    SELECT * FROM [品目元帳明細] where Posting_Date > #2019-01-01#

    ([Expression.Error])[3.73-3.81]名前'#2019'は現在のコンテキストに存在しません。

    SELECT * FROM [品目元帳明細] where Posting_Date > '#2019-01-01#'

    ([Expression.Error] 演算子<を型TEXTおよびDateに適用できません。)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2019-07-04T02:10:59+00:00

    t-ito-aaさん 初めまして

    指定や範囲指定でも同じ結果(Expression.Error)になりますでしょうか

    SELECT *FROM [xxxxxxx] WHERE  Item_Date <> '2004-09-09';

    SELECT * FROM [xxxxxxx] WHERE  Item_Date >= '2019-01-01' AND Item_Date<'2019-02-01';

    野暮用が出来、時間がないので、、

    昔の記憶で、該当しないかもですが、日付型(date型)のフォーマットは2019/01/01のようなスラッシュではなく2019-01-01のようにハイフンを使用した方か良い?スラッシュでも動作しますが、UTF8で指定されたテーブルをSJISなど別の言語で日付抽出する時などに値が変わり、不具合が、、、

    的外れかもかもです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません