Sql 从时间域中提取1小时

Sql 从时间域中提取1小时,sql,sql-server,Sql,Sql Server,我有一个字符串格式为“varchar”的时间字段,我希望将该字段转换为一个时间,并从转换后的值中提取一个小时,这样,如果字段中有14:22,则转换后的值将为13:22。如何在视图中执行此操作?如果使用MySQL,请使用DATE\u SUB减去一个时间段 SELECT DATE_SUB(timefield, INTERVAL 1 HOUR) AS timefield_minus_hour 如果使用MySQL,请使用DATE\u SUB减去一个时间段 SELECT DATE_SUB(timefie

我有一个字符串格式为“varchar”的时间字段,我希望将该字段转换为一个时间,并从转换后的值中提取一个小时,这样,如果字段中有14:22,则转换后的值将为13:22。如何在视图中执行此操作?

如果使用MySQL,请使用
DATE\u SUB
减去一个时间段

SELECT DATE_SUB(timefield, INTERVAL 1 HOUR) AS timefield_minus_hour

如果使用MySQL,请使用
DATE\u SUB
减去一个时间段

SELECT DATE_SUB(timefield, INTERVAL 1 HOUR) AS timefield_minus_hour

对于SQL Server,可以使用以下查询:

select dateadd(hh,-1 ,cast(timecolumn as time)) from tablename

对于SQL Server,可以使用以下查询:

select dateadd(hh,-1 ,cast(timecolumn as time)) from tablename

这适用于MS SQL 2012:

从myTable中选择DATEADD(HH,-1,强制转换(stringTime作为时间))


这适用于MS SQL 2012:

从myTable中选择DATEADD(HH,-1,强制转换(stringTime作为时间))


您使用的是什么数据库系统?Oracle、MySQL、SQL Server等?每个版本中可用的日期/时间操纵函数不一定与标准中指定的相同。很抱歉,我使用的是SQL server 2008!我试图将该函数构建到一个现有查询中,该查询获取现有字段并将它们连接起来以形成一个VARCHAR(10)字段。现有的查询字段如下所示:CASE WHEN NOT szcollectiontime=''然后转换(VARCHAR(10),Comp2.dbo.Jobitem.dtCollectionDate,103)+''+Comp2.dbo.Jobitem.szcollectiontime ELSE转换(VARCHAR(10),Comp2.dbo.Jobitem.dtCollectionDate,103)+'+'00:00'结束。如果我尝试更改查询以合并建议的函数,则会出现错误。您使用的是什么数据库系统?Oracle、MySQL、SQL Server等?每个版本中可用的日期/时间操纵函数不一定与标准中指定的相同。很抱歉,我使用的是SQL server 2008!我试图将该函数构建到一个现有查询中,该查询获取现有字段并将它们连接起来以形成一个VARCHAR(10)字段。现有的查询字段如下所示:CASE WHEN NOT szcollectiontime=''然后转换(VARCHAR(10),Comp2.dbo.Jobitem.dtCollectionDate,103)+''+Comp2.dbo.Jobitem.szcollectiontime ELSE转换(VARCHAR(10),Comp2.dbo.Jobitem.dtCollectionDate,103)+'+'00:00'结束。如果我试图更改查询以合并所建议的函数,我会遇到错误。谢谢fabigler。我想小提琴演示的准备工作需要时间+谢谢fabigler。我想小提琴演示的准备工作需要时间+1对于相同的方法。