我有一个数据类型为datetime的列,导入数据的方式始终是今天的前一天。
表中没有存储历史数据 - 在导入新数据之前删除先前的数据。
话虽如此,我想写一个where子句,其中我的ESTEndTime列在时间戳列的00:00:00和时间戳列的第二天的10:00:00之间。
我已经搜索过,但无法找到与我所寻找的内容有关的任何内容。
目的是主要捕捉那些一夜之间工作的人的结束时间。导出数据时,它总是在前一天导出到第二天,例如10月1日到10月2日。这样我们就可以看到夜间工作人员的最新退出时间。在我刚刚提到的示例中,数据将包括10月1日00:00:00到10月2日23:59:59之间的所有内容。我们无法限制特定时间。所以在我希望实现的时候使用这个例子是在10月1日00:00:00到10月2日10:00之间的where子句中限制它。问题是我不想使用那些实际日期因为我的约会总是在变化,所以我为什么在这里寻求帮助。
我有的代码,但没有得到预期的结果
SELECT timestamp, emp_id, dept, ESTStartTime, ESTEndTime
,CONCAT(emp_id, '-', FORMAT(ESTStartTime, 'yyyy/MM/dd-HH:mm')) AS Index2Start
,CONCAT(emp_id, '-', FORMAT(ESTEndTime, 'yyyy/MM/dd-HH:mm')) AS Index3Stop
,CONCAT(emp_id, '-', FORMAT(ESTEndTime, 'yyyy/MM/dd')) AS Index3StopDay
FROM dbo.[test]
WHERE ESTEndTime BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, timestamp), 0) + '00:00'
AND DATEADD(DAY, DATEDIFF(DAY, 1, timestamp), 1) + '10:00'
ORDER BY ESTEndTime DESC
答案 0 :(得分:0)
看看这是否适合你。我声明了2个变量来保存前一天的日期和时间以及当天的日期和时间。我使用comboBox_example = TTK.Combobox(window, width, textvariable)
来获取当前的日期和时间。我从中提取了日期部分,并减去了前一天的一天。然后我将日期转换为GETDATE()
并添加了时间。 SQL Server将隐式地将字符串转换回VARCHAR
值。
DATETIME
答案 1 :(得分:0)
这是另一种可以尝试的方法
{{1}}