過去30日以内にデータベースに追加されたすべてのレコードを返したい。表示のため、日付をmm/dd/yyに変換する必要があります。
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
私のステートメントは、過去30日間のレコードの制限に失敗しました-すべてのレコードを選択します。
誰かが私を正しい方向に向けることができますか?近くにいるように感じます。
ありがとう、素晴らしい一週間を。
SELECT
句ではなく、WHERE
句にDATE_FORMAT
を適用する必要があります。
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
CURDATE()
は日付のDATE
部分のみを返すため、create_date
をDATETIME
として格納し、時間部分を埋めると、このクエリは今日の日付を選択しません記録。
この場合、代わりにNOW
を使用する必要があります。
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
SELECT
*
FROM
< table_name >
WHERE
< date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY)
AND NOW();
DATE_FORMAT
は文字列を返すため、BETWEEN
句で2つの文字列を使用していますが、期待どおりに機能しません。
代わりに、SELECT
の形式に日付を変換し、実際の日付に対してBETWEEN
を実行します。例えば、
SELECT DATE_FORMAT(create_date, '%m/%d/%y') as create_date_formatted
FROM table
WHERE create_date BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()
Mysqlでこれを書くこともできます-
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date < DATE_ADD(NOW(), INTERVAL +1 MONTH);
現在の日付のアクティビティと過去30日間の完全なアクティビティでは、これを使用します。これは、SYSDATEが1日で可変であるため、過去30日にはその日のデータ全体が含まれないためです。
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND SYSDATE()
これはcurdate()
関数を使用しないソリューションです。これはTSQL
を使用するユーザー向けのソリューションです
SELECT myDate
FROM myTable
WHERE myDate BETWEEN DATEADD(DAY, -30, GETDATE()) AND GETDATE()