首页 > 解决方案 > 在 SQL 中将某些每日时间范围的日期更改为前一天

问题描述

我们有一个带有日期时间字段的表,需要让它与其他具有在系统日期而非日历日期上工作的日期字段的表正常工作。

我们的系统日一直运行到凌晨 1:59,因此在所有这些表中午夜之后的任何内容都被视为前一天(实际上并不显示日期时间,只是显示日期)。

我想弄清楚如何创建一个日期字段,其中“2019-01-01 01:45:00.111”将读作“2018-12-31”,但“2019-01-01 2:00:00.111”读作“2019-01-01”。

任何想法将不胜感激。

标签: sqlsql-server

解决方案


通过从每个日期时间值中删除 120 分钟,然后将日期时间值转换为日期,试试下面这个简单的逻辑。

SELECT CAST(DATEADD(MINUTE,-120,<your_date_time_column>) AS DATE)
FROM <Your_Table> 

推荐阅读