45

データベースのフィールド DATE の形式は次のとおりです。

2012-11-12 00:00:00

日付から時間を削除して、次のように日付を返したいと思います。

11/12/2012
4

10 に答える 10

78

まず最初に、日付が varchar 形式の変更である場合、日付を日付として保存すると、多くの頭痛の種を節約できます。これは、遅かれ早かれ行うのが最善です。問題は悪化するだけです。

次に、日付を取得したら、日付を 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())

オラクル

SELECT  TRUNC(CURRENT_TIMESTAMP)

Postgresql

SELECT  CURRENT_TIMESTAMP::DATE

レポートで文化固有の書式を使用する必要がある場合は、受け取るテキスト ボックスの書式 (例: dd/MM/yyyy) を明示的に指定するか、その言語に関連する日付書式が表示されるように言語を設定できます。

いずれにせよ、SQL 内で varchar に変換すると、レポートで行う並べ替えに影響するため、これは SQL の外で処理する方がはるかに適切です。

データ型を DATETIME に変更できない/変更しない場合でも、CONVERT(DATETIME, yourField)レポート サービスに送信する前に SQL 内で日付に変換し (例: )、上記のように処理します。

于 2013-01-11T17:25:15.313 に答える
10

( TSQL で)使用するだけです

SELECT convert(varchar, columnName, 101)

MySQL

SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
于 2013-01-11T14:10:40.347 に答える
6

この方法は非常に有用であることがわかりました。ただし、日付/時刻形式は日付だけに変換されますが、必要な作業が少なくなることはありません。(レポートに日付を表​​示する必要があっただけで、時間は関係ありませんでした)。

CAST(start_date AS DATE)

アップデート

(私は研修生です;))

SSRSを使用している場合、これを行う簡単な方法を考えました。

レポート内でフィールドが配置されているテキスト ボックスのプロパティを実際に変更する方が簡単です。フィールドを右クリック>数値>日付を選択し、適切な形式を選択してください!

于 2015-09-07T09:24:11.503 に答える
3

個人的には、完全なネイティブの日時値を返し、これをクライアント コードでフォーマットします。

そうすれば、ユーザーのロケール設定を使用して、そのユーザーに正しい意味を与えることができます。

「11/12」はあいまいです。それは...ですか:

  • 11月12日
  • 12月11日
于 2013-01-11T14:22:04.377 に答える
2
SELECT DATE('2012-11-12 00:00:00');

戻り値

2012-11-12
于 2013-01-11T14:10:52.657 に答える
2

詳細については、これを参照してください: SQL Server の日付形式

[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

ライブデモ

于 2013-01-11T14:11:32.983 に答える
0

少なくとも mysql では、DATE(theDate).

于 2013-01-11T14:10:31.560 に答える
0

次のことを試してみてください。

SELECT CONVERT(VARCHAR(10),yourdate,101);

またはこれ:

select cast(floor(cast(urdate as float)) as datetime);
于 2013-01-11T14:12:02.560 に答える
0

次の SQL を使用します。

SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;
于 2013-01-11T14:13:37.533 に答える