0

SQL Serverに、次の値を持つStartDateフィールドを持つテーブルプロジェクトがあります。

15-02-2013 15:02:40
20-08-2011 10:11:20

2013 and 2011など私は次のようなクエリで試しただけのように、明確な年の値を取得する必要があります

select (case when charindex(' ', StartDate) > 0
             then left(StartDate, charindex(' ', (StartDate))-1)
             else StartDate
        end) as StartDate FROM [kneipp].[dbo].[kn_projects]

結果を次のように与えまし15-02-2013 and 20-08-2011

select (case when charindex('-', StartDate) > 0
             then right(StartDate, charindex('-', reverse(StartDate))-1)
             else StartDate
        end) as lastone FROM [kneipp].[dbo].[kn_projects]

取得しました2013 15:02:40 and 2011 10:11:20

私の期待した結果を達成する方法

4

3 に答える 3

1

このような表現をしてみましたか?

SELECT distinct year( convert(datetime,StartDate,105)) 
FROM [kneipp].[dbo].[kn_projects]
于 2013-03-07T09:41:06.960 に答える
0

列をDATETIME形式にキャストできます

SELECT YEAR(CAST(StartDate AS DATETIME)) FROM [kneipp].[dbo].[kn_projects]
于 2013-03-07T09:39:39.643 に答える
0

他の人が指摘しているように、日時に変換できます。データ型を保持したい場合は、以下のクエリを試してください。

Declare @t varchar(50),@t1 varchar(50)
set @t='15-02-2013 15:02:40'

Select left(parsename(replace(@t,'-','.'),1),4)

任意の形式の日時がある場合は、varcharデータ型で年を返す以下の式を試してください

Select left(parsename(replace(@t1,'-','.'),1),
            charindex(' ',parsename(replace(@t1,'-','.'),1)))
于 2013-03-07T09:48:11.660 に答える