Note to Self

自分用のメモ置き場

MySQLでランダムな整数値を取得する方法

ランダムな整数値を取得する方法

MySQLで INT 型のレコードの値をランダムに更新する

例)id列を 0 ~ 10で更新する

UPDATE hoge SET id = ROUND(RAND() * 10);


例)id列を 1 ~ 10で更新する(最低値を1にする)

UPDATE hoge SET id = ROUND(1 + RAND() * 9)

MySQLで空文字を検索できない場合の対処法

MySQLで空文字を検索できない場合の対処法

空文字で検索したが何故かデータが取得できない

SELECT * FROM hoge WHERE title = '';


エスケープシーケンスの\0(ASCII NUL 文字)を使うと検索できた

SELECT * FROM hoge WHERE title = '\0';

MySQLで生年月日から年齢を計算する

MySQLで生年月日から年齢を計算する

MySQLで生年月日から年齢を計算する

※birthday は DATE 型のカラムとする

SELECT 
  (YEAR(CURDATE()) - YEAR(birthday)) - (RIGHT(CURDATE(), 5) < RIGHT(birthday, 5)) AS age
FROM hoge;


または

SELECT 
  TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM hoge;

PHPで生年月日から年齢を計算する

PHPで生年月日から年齢を計算する

(現在日付 - 誕生日) / 10000
※10000で除算することで、小数点以下を切り捨てる

<?php

$currentDate = date('Y/m/d');
$birthday = '1967/11/07';

$c = (int)date('Ymd', strtotime($currentDate));
$b = (int)date('Ymd', strtotime($birthday));
$age = (int)(($c - $b) / 10000);

/*
  結果
  var_dump($c);
  var_dump($b);
  var_dump($age);
  
  int 20170620
  int 19671107
  int 49
*/

PHPでカンマ区切りの文字列を整形する

PHPでカンマ区切りの文字列を整形する

SQLのINで複数の検索条件を使用する際に、文字列をカンマ区切りにしてパラメータに引き渡す必要がある際に使用

<?php

$hogeCode = ',,0, 100、200、300,     400, 500, 600,,,';

// 全角を半角に変換
$hogeCode = mb_convert_kana($hogeCode, 'kvrn');

// 記号を半角カンマに統一
$hogeCode = str_replace(['', '', ''], ',', $hogeCode);

// スペースを削除
$hogeCode = str_replace([' ', ' '], '', $hogeCode);

// 先頭や末尾のカンマを削除
$hogeCode = implode(',', array_filter(explode(',', $hogeCode), 'strlen'));

/*
  結果
  var_dump($hogeCode);
  string '0,100,200,300,400,500,600' (length=25)
*/

CentOS 7にPython 3.6をインストールする

1.IUS Community Project のリポジトリを追加する

yum install -y https://centos7.iuscommunity.org/ius-release.rpm

2.Python 3.6をインストー

yum install -y python36u python36u-libs python36u-devel python36u-pip

3.エイリアスを設定する

ln -s /bin/python3.6 /bin/python3
unlink /bin/python
ln -s /bin/python3 /bin/python
ln -s /bin/pip3.6 /bin/pip

CentOS 7でタイムゾーンを変更する

タイムゾーンを確認する

timedatectl

タイムゾーンを東京にセットする

timedatectl set-timezone Asia/Tokyo