0

データベースに保存されている最小の日付と最大の日付を取得したかったのです。

そのために、次のクエリを使用しました。

select min(sauda_date) as MinDate,max(sauda_date) as MaxDate from tradefile

そして、次の結果を得ました:

ここに画像の説明を入力

しかし、私はこの結果が間違っていることを知っています。

そのはず:

MinDate として 2013 年 2 月 28 日、MaxDate として 2013 年 3 月 22 日。

このため、次の質問を参照しました。

SELECT MIN(DATE) の SQL 文法

クエリを次のように変更しました。

select min(sauda_date), max(sauda_date) from tradefile group by sauda_date

しかし、私は次の結果を得ました:

ここに画像の説明を入力

私の結果は次のようになりますが:

MinDate として 2013 年 2 月 28 日、MaxDate として 2013 年 3 月 22 日。

このクエリでも試しました:

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile group by convert(datetime,sauda_date)

しかし、結果が得られませんでした。[期待]

私はどこで間違いを犯していますか?私を助けてください。

注:ここでは Sauda_Date の型は nvarchar です。

4

2 に答える 2

1

「注: ここでは Sauda_Date の型は nvarchar です。」

問題があります。nvarchar 型の最小値または最大値を選択すると、SQL は 0 から 9、a から z のように辞書式の並べ替えを使用します。他に何が使えますか?それらが日時として解釈されることを意図していることをどのように知ることができますか?

スキーマを変更して列を日付にすることができない場合は、データ型を使用する前に日付時刻にキャスト/変換できmin()ますmax()

だからあなたは次のようなものが欲しい

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile

于 2013-04-06T05:54:21.613 に答える
1

これを試して:

select 
    min(CAST(sauda_date AS DATETIME)) as MinDate,
    max(CAST(sauda_date AS DATETIME)) as MaxDate 
from tradefile
于 2013-04-06T05:56:29.663 に答える