sql - 获取 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'
日期和时间)
解决方案
如果你想要格式 yyyy-MM-dd hh
,那么可以这样做:
SELECT CONVERT(varchar(13),GETDATE(),120);
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。
推荐阅读
- image - 如何使用 imagemagick 从跨越两页的一系列 jpeg 图像创建常规的单页 pdf?
- google-maps-api-3 - Google Geolocation API 在浏览器控制台中返回 403 错误
- python - 无法更新python字典中的输出
- c# - 如何在 10 秒内将 200 万行插入 sqlserver 中的两个表
- laravel - 如何在 laravel 中同时启用 api 和 web 守卫
- jquery - 如何使用 JQuery easyui 组合树绑定分层 json 数据
- reactjs - 将空函数传递给 React 组件
- node.js - 在 AWS amplify 中重写和重定向
- r - 如何根据年份模式匹配面板数据?
- javascript - 酶 ReactWrapper 未更新