首页 > 解决方案 > 获取 getdate() 的前 n 个字符

问题描述

我有一个案例比较日期,日期时间列的小时和当前日期,小时

select * from tbl where  LEFT(EVENT_TIME_column,13) !=LEFT(GETDATE(),13)

EVENT_TIME_column格式是'2019-08-15 12:32:40.0000000'

当我执行LEFT(GETDATE(),13)结果是'Aug 15 2019'

你能建议如何进入GETDate()'2019-08-15 12'日期和时间)

标签: sqlsql-serverssms-2014

解决方案


如果你想要格式 yyyy-MM-dd hh,那么可以这样做:

SELECT CONVERT(varchar(13),GETDATE(),120);

db<>小提琴

CONVERT您可以在文档中找到所有样式代码的完整列表:日期和时间样式

但是,您似乎想检查日期是否在当前小时内。那将是:

WHERE EVENT_TIME_column >= DATEADD(HOUR, DATEDIFF(HOUR, 0,GETDATE()),0)
  AND EVENT_TIME_column < DATEADD(HOUR, DATEDIFF(HOUR, 0,GETDATE())+1, 0)

这明确地避免了列上的任何功能EVENT_TIME_column;这将使查询成为非 SARGable。


推荐阅读