データベースのフィールドDATEの形式は次のとおりです。
2012-11-12 00:00:00
日付から時刻を削除して、次のように日付を返します。
11/12/2012
まず第一に、日付がvarchar形式に変更されている場合、 日付を日付として保存する を使用すると、多くの頭痛の種が軽減されます。問題は悪化するだけです。
次に、日付を取得したら、NOT NOT日付をvarcharに変換します!日付形式で保持し、アプリケーション側で形式を使用して、必要な日付形式を取得します。
DBMSに応じて、これを行うさまざまな方法があります。
SQL-Server 2008以降:
SELECT CAST(CURRENT_TIMESTAMP AS DATE)
SQL-Server 2005およびそれ以前
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0)
SQLite
SELECT DATE(NOW())
Oracle
SELECT TRUNC(CURRENT_TIMESTAMP)
Postgresql
SELECT CURRENT_TIMESTAMP::DATE
レポートでカルチャ固有の書式設定を使用する必要がある場合は、受信テキストボックスの形式(たとえばdd/MM/yyyy)を明示的に指定するか、その言語に関連する日付形式を表示するように言語を設定できます。
いずれにせよ、SQL内でvarcharに変換すると、レポートで行う並べ替えに影響するため、SQLの外部で処理する方がはるかに優れています。
データ型をDATETIMEに変更できない場合、または変更しない場合、レポートサービスに送信する前にSQL内の日付(例:CONVERT(DATETIME, yourField)
)に変換し、上記のように処理します。
使用するだけです(in TSQL)
SELECT convert(varchar, columnName, 101)
in MySQL
SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
この方法は非常に有用であることがわかりました。しかし、それはあなたの日付/時刻形式をちょうど日付に変換しますが、それでも私がそれを必要とするもののために仕事をしません。 (レポートに日付を表示するだけで、時間は関係ありませんでした)。
CAST(start_date AS DATE)
UPDATE
(私は研修生だということを念頭に置いてください;))
SSRSを使用している場合、これを行う簡単な方法を考えました。
レポート内のフィールドがあるテキストボックスのプロパティを実際に変更する方が簡単です。フィールド>番号>日付を右クリックし、適切な形式を選択してください!
個人的には、完全なネイティブ日時値を返し、クライアントコードでフォーマットします。
そうすれば、ユーザーのロケール設定を使用して、そのユーザーに正しい意味を与えることができます。
「11/12」はあいまいです。それは...ですか:
SELECT DATE('2012-11-12 00:00:00');
返却値
2012-11-12
詳細については、これを参照してください:SQL Server Date Formats
[MM/DD/YYYY]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 101) from tbl
[DD/MM/YYYY]
SELECT CONVERT(VARCHAR(10), cast(dt_col as date), 103) from tbl
少なくともmysqlでは、DATE(theDate)
を使用できます。
以下を試すことができます:
SELECT CONVERT(VARCHAR(10),yourdate,101);
またはこれ:
select cast(floor(cast(urdate as float)) as datetime);
このSQLを使用します。
SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;