格式化日期为where条件的SQL查询

格式化日期为where条件的SQL查询,sql,sql-server,Sql,Sql Server,我正致力于自动化每日报告(使用一个bat文件),该报告将在sql数据库中运行查询。该查询具有where条件中的date(字符格式),用于提取前一天的数据。下面是示例 select column 1, column2 from ABC where time like '20160822%' 8月22日数据 我需要格式化查询的帮助,这样当bat文件通过使用下面的查询按计划运行时,查询将在1天内提取数据 SELECT CONVERT(char(10), GetDate()-1,126) 永远不要在

我正致力于自动化每日报告(使用一个bat文件),该报告将在sql数据库中运行查询。该查询具有where条件中的date(字符格式),用于提取前一天的数据。下面是示例

select column 1, column2 from ABC where time like '20160822%'
8月22日数据

我需要格式化查询的帮助,这样当bat文件通过使用下面的查询按计划运行时,查询将在1天内提取数据

SELECT CONVERT(char(10), GetDate()-1,126)
永远不要在文本列中存储日期信息,这似乎就是您所做的。也就是说,您可以使用
子字符串
转换
的组合,将
时间
列与昨天的日期进行比较

SELECT col1, col2
FROM ABC 
WHERE SUBSTRING(time, 1, 4) = CONVERT(char(4), GETDATE()-1, 126) AND
      SUBSTRING(time, 5, 2) = SUBSTRING(CONVERT(CHAR(8), GETDATE()-1, 126), 6, 2) AND
      SUBSTRING(time, 7, 2) = SUBSTRING(CONVERT(CHAR(8), GETDATE()-1, 126), 9, 2)

数据处理特定于关系数据库服务器的品牌和型号。请将您的问题添加到MySQL、sql server、Oracle、postgreSQL、,或者您正在使用的任何服务器。对我来说,这看起来像SQL server。您可以附加问题中的表数据吗?查询没有返回任何结果。时间字段长度为14个字符:感谢Tim的及时响应。我尝试了上述查询,但它没有获取任何前一日期的结果。时间字段长度为14个字符。示例一is:20160824000316。那么是否可以使用修剪值,然后进行比较。您确定有任何匹配的数据?
time
字段是否为varchar?——为时间列-20160824000316 YYYYMMDDHHMMSS添加更多说明。因此,可以在这里使用trim并删除时间细节,然后将自动减量设置为-1。