0

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

如下所示。

Select * from table where StartTime > EndTime

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

谁能帮我添加写比较时间的地方。

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

4

5 回答 5

1

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

--编辑

对于 SQL Server,

Select * from table where CONVERT(datetime, StartTime , 120) > CONVERT(datetime, EndTime , 120)
于 2013-04-04T07:29:44.790 回答
1

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

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

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

于 2013-04-04T07:31:21.380 回答
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)
于 2013-04-04T09:14:05.187 回答
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)
于 2013-04-04T07:31:25.180 回答
0

你需要CASTTIME

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

现场演示

于 2013-04-04T07:32:52.890 回答