我想根据特定时间从表中检索数据,因此我在下面使用此查询。
select * from a
where convert(smalldatetime,date,datepart(hh,date)) ='09:12:00'
但结果没有排。那么我应该如何处理我的预期结果?
答案 0 :(得分:1)
您可以直接转换为varchar,如下所示
SELECT * FROM a
WHERE CONVERT(VARCHAR(8), [date], 108) = '09:12:00'
答案 1 :(得分:0)
试试这个:
SELECT *
FROM a
WHERE CONVERT(VARCHAR(8), [DATE],108) = '09:12:00'
您的数据类型已为smalldatetime
,因此您必须转换为varchar
并与字符串进行比较。
修改强>
答案解释:
您在[DATE]列中有smalldatetime
。例如2015-10-01 09:12:00
。仅比较您需要转换为仅包含时间的字符串的时间。因此,您将使用TSQL中的命令CONVERT。
它会将smalldatetime
转换为8个字符的字符串。因此,您将拥有09:12:00
,然后将其与字符串进行比较。
答案 2 :(得分:0)
// CONVERT(DATA_TYPE(长度),表达,风格)
SELECT a.`mid`, a.cnt AS countmid, b.s AS totalnwgh
FROM
(SELECT `mid`, COUNT(DISTINCT pid) AS cnt FROM test GROUP BY 1) AS a INNER JOIN
(SELECT `mid`, SUM(nwgh) AS s FROM test GROUP BY 1) b ON a.mid=b.mid
答案 3 :(得分:0)
在Sql server 2008中,您可以转换为TIME。通过指定TIME(0),您可以获得所需的格式:
SELECT *
FROM a
WHERE CAST(date as time(0)) ='09:12:00'