問題:
SQLServerデータベースの日付フィールドまたは値の形式を変更したい。
例:
私たちのデータベースには、Patient
Id
列にデータがあります 、FirstName
、LastName
、およびRegistrationDate
。
Id | FirstName | LastName | RegistrationDate |
---|---|---|---|
1 | ジェーン | ウィリアムズ | 2019-06-20 |
2 | ガブリエル | ブラウン | 2019-02-02 |
3 | ロラ | フォーク | 2016-11-05 |
各患者の登録日の形式を変更しましょう。最初に平日の名前を入力し、次に月の日と名前、4桁の年を入力します(例:「2019年12月27日金曜日」)。
解決策:
FORMAT()関数を使用して、RegistrationDate
の日付の形式を変更します 列。
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
クエリの結果は次のとおりです。
FirstName | LastName | FormattedRegistrationDate |
---|---|---|
ジェーン | ウィリアムズ | 2019年6月20日木曜日 |
ガブリエル | ブラウン | 2019年2月2日土曜日 |
ロラ | フォーク | 2016年11月5日土曜日 |
ディスカッション:
FORMAT()関数を使用して、特定の日付の表示方法を変更できます。この関数は、2つの必須引数と1つのオプションの引数を取ります。この例では、2つの必須の引数のみを使用しました。 1つ目は日付です。これは、日付/時刻/日時の列、または日付または時刻を返す任意の式から取得できます。 (この例では、列RegistrationDate
を使用します 。)2番目の引数は、新しい日付形式を含む文字列です。この例では、'dddd、dd MMMM、yyyy'を使用しました :
- dddd –曜日の名前。
- d –1から31までの月の日。
- MMMM –その月のフルネーム。
- yyyy –4桁の年。
次の表は、その他の日付/時刻形式指定子を示しています。
指定子 | 説明 |
---|---|
d | 1〜31の範囲の日 |
dd | 01〜31の範囲の日 |
ddd | 曜日の省略名 |
dddd | 曜日のフルネーム |
M | 1から12までの月 |
MM | 01から12までの月 |
MMM | 月の略称 |
MMMM | 今月のフルネーム |
y | 2桁の年、0から99まで |
yy | 00から99までの2桁の年 |
yyyy | 4桁の年 |
g | 時代(例:西暦) |
h | 1から12までの時間(12時間時計) |
hh | 01から12までの時間(12時間時計) |
H | 0から23までの時間(24時間制) |
HH | 00から23までの時間(24時間制) |
m | 0から59までの分 |
mm | 00から59までの分 |
s | 0から59までの2番目 |
ss | 00から59までの2番目 |
t | AMまたはPMの最初の文字(例:9A、5P) |
tt | AMまたはPM |
z | 先行ゼロなしの時間オフセット(例:+3) |
zz | 時間オフセット、先行ゼロ(例:+03) |
標準の日付と時刻の形式とカスタム形式については、Microsoftのドキュメントで詳細を確認できます。
この日付を特定の言語や国に合わせてフォーマットする場合は、3番目のオプションの引数を使用します:文化 。この引数は、特定の地域または国のカルチャコードを含む文字列です。 (カルチャコードは、言語コード、ダッシュ、および国コードで構成されます。)以下の例では、ドイツの言語コード('de')とドイツの国コードを組み合わせたドイツのカルチャコードを使用します。 ('DE')、つまり'de-DE'。結果の日付はドイツ語で表示され、ドイツの視聴者が期待するとおりにフォーマットされます。
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
このクエリの結果は次のとおりです。
FirstName | LastName | RegistrationDate |
---|---|---|
ジェーン | ウィリアムズ | Donnerstag、2019年6月20日 |
ガブリエル | ブラウン | Samstag、2019年2月2日 |
ロラ | フォーク | Samstag、2016年11月5日 |