3

SQL Server 2008を使用していますがvarchar、時間間隔が10分ベースの時間列()があります。時刻を30分と1時間で表示したい。

テーブル(timeslot)には次のデータがあります。

time
-----
11:10 AM
11:20 AM
11:30 AM
11:40 AM
11:50 AM
12:00 PM
12:10 PM
12:20 PM
12:30 PM
12:40 PM
12:50 PM
01:00 PM
01:10 PM
01:20 PM

そして、私はこの出力を表示したいと思います:

time
-----
11:00 AM
11:30 AM
12:00 PM
12:30 PM
01:00 PM
01:30 PM

誰かがこれについて私を助けることができますか?前もって感謝します...

4

2 に答える 2

0

次のようなものを試してください。

SELECT 
    (list of columns)
FROM 
    dbo.YourTableWithTheTime
WHERE 
    DATEPART(MINUTE, CAST(YourTimeColumnHere as TIME)) IN (0, 30)

もちろん、最初に列に適切なデータ型を使用した場合TIMEは、構成を保存することができ、作業はCAST(.. as TIME)さらに簡単になります。

更新:あなたがあなたの時間までに注文する必要がある場合-これを使用してください:

SELECT 
    DISTINCT [time]
FROM 
    dbo.YourTableWithTheTime
WHERE 
    DATEPART(MINUTE, CAST([time] as TIME)) IN (0, 30)
ORDER BY
    CAST([time] as TIME)

PS:列に名前を付けるのも本当に悪い考えtimeです-それはSQL Server 2008の(データ型用の)予約済みキーワードだからです....。

于 2012-10-12T05:29:10.420 に答える
0
WITH CTE 
AS (SELECT DISTINCT columnname FROM table_name
WHERE DATEPART(MINUTE, CAST(column as TIME)) IN (0, 30) )
SELECT columnname
FROM CTE
ORDER BY CAST(columnname as time)
于 2012-10-12T07:51:22.800 に答える