web-dev-qa-db-ja.com

datetimeから時間を削除する方法

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

2012-11-12 00:00:00

日付から時刻を削除して、次のように日付を返します。

11/12/2012
36
user1860212

まず第一に、日付が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))に変換し、上記のように処理します。

62
GarethD

使用するだけです(in TSQL

SELECT convert(varchar, columnName, 101)

in MySQL

SELECT DATE_FORMAT(columnName, '%m/%d/%Y')
8
John Woo

この方法は非常に有用であることがわかりました。しかし、それはあなたの日付/時刻形式をちょうど日付に変換しますが、それでも私がそれを必要とするもののために仕事をしません。 (レポートに日付を表​​示するだけで、時間は関係ありませんでした)。

CAST(start_date AS DATE)

UPDATE

(私は研修生だということを念頭に置いてください;))

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

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

4
SnellyCat

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

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

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

  • 11月12日
  • 12月11日
3
gbn
SELECT DATE('2012-11-12 00:00:00');

返却値

2012-11-12
2
Davide Berra

詳細については、これを参照してください: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

ライブデモ

2
Vishal Suthar

少なくともmysqlでは、DATE(theDate)を使用できます。

0

以下を試すことができます:

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

またはこれ:

select cast(floor(cast(urdate as float)) as datetime);
0
bonCodigo

このSQLを使用します。

SELECT DATE_FORMAT(date_column_here,'%d/%m/%Y') FROM table_name;
0
bodi0