20191009のMySQLに関する記事は5件です。

datetimeを配列にしたり、一行で日付だけ受け取ったり

やりたいこと

'2019-10-09 01:20:33'

というmysqlに登録されているdatetime形式のデータを

$datetime = [
    'year' => '2019',
    'month' => '10',
    'day' => '09',
    'hour' => '01',
    'minute' => '20',
    'second' => '33',
];

といった配列形式にしたり

$day = hogehoge('2019-10-09 01:20:33'); // 09

と、ぱっと取得できるようにしたい。

配列形式にする

// 一般的なdatetime
$datetime1 = getDateTimeArray('2019-10-09 01:20:33');
$datetime2 = getDateTimeArray('2019/10/09 01:20:33');

// 特殊な場合はformatオプションを付ける
$datetime3 = getDateTimeArray('2019年10月09日01時20分33秒', 'Y年m月d日H時i分s秒');

function getDateTimeArray($datetime, $format = '')
{
    if (empty$format) {
        $date = new DateTime($datetime);
    } else {
        $date= DateTime::createFromFormat($datetime, $format);        
    }
    $datetime_key = ['year', 'month', 'day', 'hour', 'minute', 'second'];
    return array_combine(
        $datetime_key,
        preg_split('/[-: ]/', $date->format('Y-m-d H:i:s'))
    );
}

日付だけほしい

// 一行で
$day1 = date_create('2019-10-09 01:20:33')->format('d');

$day2 = DateTime::createFromFormat('Y年m月d日H時i分s秒', '2019年10月09日01時20分33秒')->format('d');

関数使ったほうが見やすいかな

// 一般的なdatetime
$day1 = getDateTimeByFormat('2019-10-09 01:20:33', 'd');

// 特殊な場合
$day2 = getDateTimeByFormat('2019年10月09日01時20分33秒', 'd', 'Y年m月d日H時i分s秒');

function getDateTimeByFormat($datetime, $format, $create_format = "")
{
    if (empty($create_format)) {
        return date_create($datetime)->format($format);
    } else {
        return DateTime::createFromFormat($create_format, $datetime)->format($format);
    }
}

日付以外表示しないならこれでもいいがちょっと長い。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MYSQLでデータベース名にハイフン(-)が入っているとエラーになる

少し詰まったのでメモ

DB名にハイフンを使いたい場合は、バッククォートで囲まないとエラーになる

create database `test-db`;

selectも同様
select * from `test-db`.test;

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

40手前、気分は高校1年生。プログラミング(Ruby on Rails)を3ヶ月勉強して一口馬主とかPOGで少し役立ちそうな馬の検索WEBサービス(webアプリ)を作ってみた!

粛々と窓際社員を驀進中の小生であるが、ボケーーーっと平日を過ごし、
ただただ週末の競馬を楽しみに生きる人生。

これでいい、とも思うし、これではダメだ。。とも思う。

ただギャンブルとは別のスパイスが欲しいという欲求と、プログラミングをちょっとやってみたい、という秘めた思いを10年越しに実現することにした。

窓際社員であることも、学習を進める上で大いに役立った。

だって・・・・仕事ないから・・・・・。ネットサーフィン感覚で、勉強できるのですもの。。。。。

ついでに毎日腕立てと腹筋を100回以上やることにした。

◆ 作ったサービス

うまBANG!
www.umabang.com

◆ どんなサービス?

血統表に馬名を入れると該当する馬を検索できるサービスです。
とりあえず今は2013-2015年産世代のデータを検索対象にしています。

こんな感じで検索すると

こんな感じで結果がわかる

◇ 動機というか一口馬主をやっていてのペイン

静止画、動画、血統、クラブ、厩舎、などなどなどなど一口馬主の馬選びは様々な要素を考慮する必要があり、
人それぞれ優位に思っていることは違う。
例えば小生は元々は静止画から判断していたが、最近だと動画、そして血統も考慮するようになった。
そう、続ければ続けるほど、何やら様々なものが見えすぎて、シンプルに馬選びを出来なってきているのだ。

そうすると従来は出資しなかった馬に出資したり、どんどん深みにはまっていく。
そこに納得感があれば良いが、必ずしもそうではない。

謎に出資馬を増やしてしまいそうになる誘惑に駆られることも多いが、めちゃくちゃ金持ちでない限り、台所事情はなかなか苦しくなっていく。
小生然り。

ただ血統から絞れることも多く、さらにパズルのように様々な組み合わせを検証したくなる。

・スクリーンヒーローやキングカメハメハ牝馬は成績悪い?
・父 ディープインパクト 母父 stormcat は本当にニックス?
・では父父 サンデーサイレンス  母父 stormcat はどうなの?
・母父 orpen とか注目されているけど?(ポレンティア!)
・fastnetrock ってどうよ?(モーソンピーク!)
・母父 サンデーサイレンスを買っておけば良い簡単なお仕事です(ダイアトニック!アーモンドアイ!ブラストワンピース!)

こんな気持ちを手軽に解決できたらな〜と思ったのがそもそもの動機。
確率的に期待値が低いことを明確にして、そもそも出資しない血統マイルールを今一度持ち直したいと考えている。

◇ 一口馬主をやっていて、できれば出資馬に望むこと

重賞に出走して欲しい!できれば重賞で好走して欲しい!!!
一口馬主を数年やった小生が出資時に最も思うことである。

当該週の重賞はメディアにも多く取り上げられ、様々な方が出資馬の名前を呼んでくれる。
なにものにも代え難い幸せ・・・。

そこで、このサービスでは重賞出走歴のある馬のみで絞り込み検索できるようにした。

加えてなんとなく1000万以上稼いでくれると、最低限楽しませてくれる、ということも感じているので、
最低ラインとして獲得賞金1000万以上の馬が何頭マッチするのかも見られるようにした。
ノルマンディーであればこの辺りが損益分岐点の一つ基準になるだろう。

◇ 改めますと・・・

・牡牝の成績差がわかる。
・重賞出走まで届く可能性をなんとなく調べられる。
・賞金1000万以上獲得する確率もなんとなくわかる。

よろしければ遊んでみてください。もしご変なところがあればコメントをください。

うまBANG!
www.umabang.com

今後これを使ってノルマンディーの馬を見てみようと考えている。
こっちのブログで。

清純派 一口馬主ライフとパドック予想師!誠意の競馬日記と反省
http://paddock.hatenablog.com/

◆ 番外

◇ 今後やりたいこと

対象の馬を増やす
検索時のサジェスト
並び替え
人気ランキングをちゃんとする
検索履歴の保持
サンデーサイレンスの 3x4 4x3 とか馬名と世代を指定して検索できるようにしたい

なんかができればと思います。

◇ どんな勉強をしたか

WEBの講座をやりました。週2回メンターとのビデオMTGがあり、そこで褒めていただけるのでやりがいを持って進められました。

ひさしぶりに他の人から褒められる体験でした。

少しお値段は張りましたが、一口馬主のせいでお金の価値が暴落中なので、躊躇せず申し込めました。

◇ どれくらい勉強したのか

平均すると1日3-4時間程度を2.5ヶ月続けて、このうまBANG!に取り組みました。

◇ 一番辛かった時

スクールの環境が 開発環境 Cloud9 x MySQL 本番環境 Heroku x PostgreSQL だったので、いざ公開しようと思ったら動かなかったのが辛かったです。
さらに、Heroku を MySQL に変更しようとして失敗していた時は絶望に暮れました。

◇ 今つらいこと

ギャグでAmazonアソシエイトとgoogleアドセンスに申し込んでみたのですが、審査で断れています。
一所懸命勉強して作ったのに。。。。。なんだろうこの疎外されている感じ。。。。理由もわからないし。。。。

こういうことから JOKER が生まれるのだと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQL JOINの概略

eah_sql_blog1.jpg

いつも忘れるのでメモ

よく使うのが、AとBを比較して、どちらかにしか存在しないレコードを抽出は
LEFT JOIN or RIGHT JOIN

抽出条件に、比較先のレコードをNULLにすると、一致しないレコードを抽出できる

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AUTO INCREMENT

前回 でMySQLを復活させられたものの、アプリ経由からデータを一行しか入れられなくなってしまいました。
原因はPRIMARY KEYとして設定していた採番カラムに「AUTO INCREMENT」を設定していなかったから。
カラムを設定する際、この「AUTO INCREMENT」を理解していなかった為、このようなミスが出たと思い、備忘録兼ノートとしてこの記事を作成しました。

AUTO INCREMENTとは?

AUTO INCREMENTは、データを追加した際にカラムに対して現在格納されている最大の数値に 1 を追加した数値を自動で格納することが出来る機能です。採番や連番など連続した数値を自動で格納させたい時に用いられます。

phpmyadmin id.PNG
phpmyadminでは、上図のように「A I」のチェックボックスにチェックを入れることで、そのカラムにAUTO INCREMENTを設定することが出来ます。

書式

以下の書式で設定することが出来ます。
CREATE TABLE db_name.tbl_name
(col_name data_type AUTO_INCREMENT, ...)

制約

1.一つのテーブルにつき、AUTO INCREMENTを設定できるカラムは一つ。
2.AUTO INCREMENTを設定したカラムはインデックスを設定する必要がある。
3.AUTO INCREMENTを設定したカラムにDEFAULT制約を設定することは出来ない。
4.AUTO INCREMENTは正の数値を格納した場合のみ動く

まとめ

とりあえず簡単にまとめました。
今後得たことや気づいた点などがありましたら、追記致します。

参考サイト

AUTO_INCREMENTを設定する(連続した数値を自動でカラムに格納する) | MySQLの使い方 https://www.dbonline.jp/mysql/table/index7.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む