sql - 获取日期少 1 天
问题描述
我想知道 9 月 19 日的数据。
当输入20天的值时,不知道如何表达变量的表达式来得到前一天的值。(@TransDate-1) <---- 我该如何解决这个问题?(数据类型仅为 varchar)
DECLARE @TransDate VARCHAR(10)
SET @TransDate = '2019-09-20'
SELECT ItemCode, SUM(Quantity)
FROM INVENTORYOUTDETAIL
WHERE TransDate <= @TransDate-1 AND FacilityCode = '10' AND OutType='MOVE'
GROUP BY ItemCode
解决方案
使用DATEADD()
:
DATEADD(day, -1, @TransDate)
DECLARE @TransDate DATE
SET @TransDate = '2019-09-20'
SELECT DATEADD(day, -1, @TransDate)
| (无列名) | | :----------------- | | 19/09/2019 00:00:00 |
在您的查询中:
SELECT ItemCode, SUM(Quantity)
FROM INVENTORYOUTDETAIL
WHERE
TransDate <= DATEADD(day, -1, @TransDate)
AND FacilityCode = '10'
AND OutType='MOVE'
GROUP BY ItemCode
注意:您应该将变量声明@TransDate
为 aDATE
而不是VARCHAR
,然后:
如果 column
TransDate
有DATE
-like 数据类型,则可以直接将其与变量进行比较如果 column
TransDate
是 aVARCHAR
,最安全的方法是在比较之前将其转换为DATE
first ,所以:CONVERT(date, TransDate) <= DATEADD(day, -1, @TransDate)
推荐阅读
- ios - 不同 controlStates 的 ASButtonNode 属性标题
- python - 如何从 Python 中的 FIGARCH 模型中获得条件均值和标准差?
- eclipse - 如何在 Eclipse 插件中识别 ProgressMonitor 的完成状态?
- sql-server - 如何为 F# SqlProgrammabilityProvider 调用存储过程使用本地架构
- javascript - 如何详细说明正则表达式以仅显示文件扩展名之后的第一个问号之前的最后一个斜杠之后的字符?
- nativescript-vue - 这行“render: h => h('Frame', [ h(App) ])” 有什么作用?
- sql - 使用连接语句的 DB2 更新查询
- algorithm - 查找与输入数组有最大交集的数组的有效方法
- qt - Qt 中事件的默认优先级
- timeout - 是否可以使用 Tomcat 8 和 Liferay 7 运行长时间请求?