前提・実現したいこと
SQLserverで日付の取得。
過去の日付から指定した日付までの日数を月単位で取得したいのですが上手くいきません。
入社日 | 退職日 |
---|---|
2019/02/28 | 2019/03/29 |
2019/04/10 | 2019/05/10 |
2019/04/10 | 2019/05/11 |
このような日付のデータがあり、入社日と退職日の差分を取得し、在籍期間を表示させたいのですが上手くいきません。
表記の仕方としては「入社後○ヶ月」ではなく「入社○ヶ月目」という表記にしたいです。
4/10~5/10までは1ヶ月目、4/10~5/11は2か月目、というような表記です。
毎月の日数が当然ながら違うので(1ヶ月28日しかない月もあれば31日ある月もあるため)
純粋に30日で1ヶ月という計算もできず…
入社日 | 退職日 | 在籍期間 |
---|---|---|
2019/02/28 | 2019/03/29 | 2ヶ月 |
2019/04/10 | 2019/05/10 | 1ヶ月 |
2019/04/10 | 2019/05/11 | 2ヶ月 |
このように表示するにはどうすればいいでしょうか。
DATEDIFFを使ってみましたが、自分のやり方が悪いのか以下のような表示になり上手くいきませんでした。
入社日 | 退職日 | 在籍期間 |
---|---|---|
2019/02/28 | 2019/03/29 | 1ヶ月 |
2019/04/10 | 2019/05/10 | 1ヶ月 |
2019/04/10 | 2019/05/11 | 1ヶ月 |
どうか知恵をお貸しいただければと・・・
該当のソースコード
下記のコードを試しましたが思っている動きになりませんでした。
テーブル定義
SQL
1create table shain_date 2( 3 col1 date 4 ,col2 date 5); 6 7insert into shain_date values ('2019-02-28', '2019-02-28'); 8insert into shain_date values ('2019-04-10', '2019-05-10'); 9insert into shain_date values ('2019-04-10', '2019-05-11');
SQL
1select 2 col1 as 入社日 3 ,col2 as 退職日 4 ,convert(varchar(50), datediff(month, col1, col2)) + 'ヶ月' as 在籍期間 5from 6 shain_date; 7
補足情報(FW/ツールのバージョンなど)
SQL server
回答1件
あなたの回答
tips
プレビュー