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

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

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

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

Q&A

解決済

3回答

8158閲覧

【指定日~指定日の前日を取得する方法】

star24star

総合スコア115

SQL

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

0グッド

0クリップ

投稿2015/09/18 04:30

【指定日の前日を取得する方法】

ある期間内のデータを抽出するSQLを書いているのですが、
指定日~指定日の前日を抽出するSQLがわからないでいます。

(仮)
指定日=2015-09-01~2015-10-01
今日=2015-9-20
欲しいデータ=2015-09-01~2015-09-19

SQL

1SELECT 2 date_format(from_unixtime(created_at),"%d") as report_date 3 (ユニックスタイムスタンプを変換) 4FROM 5 table_name 6WHERE 7 created_at >= 1441033200 (2015-09-01) 8AND 9 created_at <= 1443711599 (2015-10-01) 10AND 11 今日の日付より一日前の日付 12

データは一カ月分、抽出したいのですが、
当日分は取得せず、指定日から当日(今日)の一日前までの
範囲を取得するSQLをご存知の方がおられましたらご教授くださると
幸いでございます。

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

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

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

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

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

guest

回答3

0

ベストアンサー

created_atをユニックスタイムで保持しているようなので
現在日時からユニックスタイムを取得して
それより前としてあげればよいのではないでしょうか?

SQL

1SELECT 2 date_format(from_unixtime(created_at),"%d") as report_date 3 (ユニックスタイムスタンプを変換) 4FROM 5 table_name 6WHERE 7 created_at >= 1441033200 (2015-09-01) 8AND 9 created_at <= 1443711599 (2015-10-01) 10AND 11 created_at < unix_timestamp(CURRENT_DATE()) 12 (今日のユニックス時間より前)

※DBMSによって関数に違いがあるので
質問にDBMS(今回ならMySQL)を書いていただけるとありがたいです

投稿2015/09/18 06:01

kutsulog

総合スコア985

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

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

0

前日の日付をぴったり指定するのではなく、=を含まない不等号で対応できませんか?

sql

1SELECT 2 date_format(from_unixtime(created_at),"%d") as report_date 3 (ユニックスタイムスタンプを変換) 4FROM 5 table_name 6WHERE 7 created_at >= 1441033200 (2015-09-01) 8AND 9 created_at <= 1443711599 (2015-10-01) 10AND 11 created_at < CURDATE()

追記:
kutsulogさんのおっしゃるように、created_atはunixタイムスタンプとして保存している様子ですね・・・。
その場合、最終行はunixタイムスタンプに変換してから比較する必要があります。

FROM_UNIXTIME関数が使えるならばMySQLやOracleあたりだと思うのでUNIX_TIMESTAMP関数が使えると思いますが、無い場合はDBMSに合った方法を使用してください。

投稿2015/09/18 04:47

編集2015/09/18 06:33
hy3

総合スコア594

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

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

0

初めまして。

指定日の最終日を今日にすると問題がありますか?

SQLで9/110/1を指定してさらにその中の9/20までを指定するというのは9/110/1までと相違はないと思います。

それとも、9/1~10/1の範囲から今日だけを除外したいのでしょうか?
でしたらwhere句に
AND created_at <> 9/20
または
AND created_at != 9/20
で出力出来ます

投稿2015/09/18 04:48

kpiyohiko

総合スコア658

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問