MSSQL中实现时间戳早于7点显示前一天日期的SQL查询
MSSQL 按时间规则生成自定义日期字段
可以通过CASE条件判断结合日期函数实现需求,以下是具体SQL查询语句:
SELECT Source, Message, TimeStamp, FORMAT( CASE WHEN CAST(TimeStamp AS TIME) < '07:00:00' THEN DATEADD(DAY, -1, CAST(TimeStamp AS DATE)) ELSE CAST(TimeStamp AS DATE) END, 'yyyy/MM/dd' ) AS Date FROM YourTableName;
语句解释:
- 时间判断:
CAST(TimeStamp AS TIME) < '07:00:00'将TimeStamp转换为时间类型,直接与7点整的时间做比较,判断是否早于7点。 - 日期计算:
- 若时间早于7点,通过
DATEADD(DAY, -1, CAST(TimeStamp AS DATE))将TimeStamp的日期部分减1天,得到前一天的日期。 - 若时间在7点及之后,直接提取
TimeStamp的日期部分。
- 若时间早于7点,通过
- 格式转换:
FORMAT(..., 'yyyy/MM/dd')将计算后的日期转换为YYYY/MM/DD的字符串格式,匹配输出要求。
示例验证
针对提供的测试数据:
| Source | Message | TimeStamp |
|---|---|---|
| Alarm | 消息 | 2022-12-12 06:59:00.00000 |
| Alarm2 | 消息2 | 2022-12-12 07:01:00.00000 |
执行上述查询后,会得到期望结果:
| Source | Message | TimeStamp | Date |
|---|---|---|---|
| Alarm | 消息 | 2022-12-12 06:59:00.00000 | 2022/12/11 |
| Alarm2 | 消息2 | 2022-12-12 07:01:00.00000 | 2022/12/12 |
内容的提问来源于stack exchange,提问作者burak
相关产品推荐
相关产品推荐

