如何在sql server 2005中比较时间

时间:2013-04-04 07:27:55

标签: sql sql-server

我在表格中有两列,字符串格式starttimeendtime格式的(HH:MM tt) Starttime = 12:15PMendtime = 12:52PM 我想在sql查询的where子句中添加条件来检查startime是否大于endtime

如下所示。

Select * from table where StartTime > EndTime

(我无法在此比较这种情况)

任何人都可以帮我添加写比较时间。

注意:两个值都以字符串格式存储。

5 个答案:

答案 0 :(得分:1)

将字符串值转换为时间戳或日期时间格式,然后使用where条件。

- 编辑的

对于SQL Server,

Select * from table where CONVERT(datetime, StartTime , 120) > CONVERT(datetime, EndTime , 120)

答案 1 :(得分:1)

在进行比较之前,您需要将string值转换为Time

Select * from table where CAST(StartTime As Time) > CAST(EndTime As Time)

然而,最佳解决方案是将StartTimeEndTime列的数据类型更改为数据类型Time,而不是string

答案 2 :(得分:1)

试试这个。

SELECT * FROM table WHERE CONVERT (TIME, StartTime) > CONVERT (TIME, EndTime)

对于SQL 2005:

SELECT * FROM table WHERE CONVERT(Varchar(8), CONVERT(DATETIME, StartTime), 8) > CONVERT(Varchar(8), CONVERT(DATETIME, EndTime), 8)

答案 3 :(得分:0)

试试这个

Select * from table where CAST(starttime AS TIME) > CAST(endtime AS TIME)

试试这个

 Select * from table where CAST( '2013/01/01 ' + starttime AS DATETIME) > CAST( '2013/01/01 ' + Endtime AS DATETIME)

答案 4 :(得分:0)

您需要CASTTIME

Select * from tbl where CAST(StartTime as TIME) > CAST(EndTime as TIME)

Live Demo