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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

2094閲覧

mysqlのテーブルのカラム日付をshellで読み込み、日にちの計算をしたいです。

s_ayana

総合スコア35

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2017/11/30 03:04

現在テーブルに

テーブル名:sample_user
user_id password cility_id kensh_div lock_flg crt_datetime mcuser_id del_flg
1 NULL NULL NULL NULL NULL NULL NULL
2 NULL NULL NULL 1 2017-12-05 00:00:00 NULL NULL

とあります。

このcrt_datetimeの2017-12-05 00:00:00だけを変数に直して日にちを計算することは可能でしょうか?

ちなみに書いたshell

!/bin/sh

date_1=3

if [ date = crt_datetime-date_1 ]; then
content=mysql -h 192.168.*.* -u ***_user --password=**** --database=sample -e "select * from sample_user where crt_datetime = '2017-12-05'2>&1
echo $content
echo "$content" | mail -s "Reminder" "exe@example.jp"
echo "sendmail"
fi
~

このif文のとこで, if [ 現在の日付(date) = crt_datetime(2017-12-05) 引く(-) date_1(3日)]
とやっているつもりなのですが、うまくいきません。
このif文の日付の比較と計算が分かる方よろしくお願いします。

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

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

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

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

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

guest

回答2

0

期日のデータを取得する部分のみですがサンプルを作成してみました

bash

1date_1=3 2date_3=`date -d"+${date_1} days" +%Y-%m-%d` 3 4mysql -h localhost -u uhoge --password=phoge --database=dhoge -Nse " 5 select * from sample_user where crt_datetime = '${date_3}'" | while read -a rc; 6do 7 echo ${rc[0]} ${rc[5]} 8 # mail send 9done

*注 日付'2017-12-03 00:00:00'は${rc[5]}と${rc[6]} に分かれています。

投稿2017/11/30 04:56

編集2017/11/30 05:04
A.Ichi

総合スコア4070

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

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

0

ベストアンサー

crt_datetimeが定義されていないから?

sh

1#!/bin/sh 2 3# 基準となる年月日 4crt_datetime=20171205 5 6# n日前を生成 7period=5 8 9date1=`date --date "$crt_datetime $period days ago" +%Y-%m-%d` 10 11# 現在の年月日と生成した年月日が同じなら~ 12if [ `date +%Y-%m-%d` = $date1 ]; then 13echo wwww 14fi

パッと見た感じですが、3日後のデータが欲しいのであれば現在から3日後を作成してSQLを投げればokなのかなと、、

SH

1#!/bin/sh 2 3# n日後を生成 4period=5 5 6after=`date --date "$period days" +%Y-%m-%d` 7 8echo $after

投稿2017/11/30 04:11

mayoi_maimai

総合スコア1583

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

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

s_ayana

2017/11/30 07:46

crt_datetime定義されてないからでしたでした! ありがとうございます ちなみにshellで定義したcrt_datetimeを直接mysqlのフィールドの2017-12-05を代入することは可能か、お分かりになりますでしょうか?
mayoi_maimai

2017/11/30 08:13

SQLの【crt_datetime = '2017-12-05'】の検索条件に指定するということでしょうか? であれば crt_datetime = '2017-12-05' ↓ crt_datetime = '${crt_datetime }'でいけませんかね? 尚、上記date1にはn日前を生成した結果が入っていますので、そちらを参照する場合は crt_datetime = '${date1 }'でいけると思います。
s_ayana

2017/11/30 08:54

申し訳ありません。いけませんでした。SQLのテーブルデータがshellに読み込まれていないから、shellが(crt_datetimeなんて知らないよ!) と認識しているのでしょうか? それともSQLのcrt_datetimeの日付とshellのdatetime日付を連動させることは不可能で両方とも毎回変えた方がいいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問