我有一个案例比较日期,datetime的小时数列和当前日期,小时
private void DrawPoints() {
bool hasReversed = false;
bool reversedLeft = false;
var leftEdge = mainCamera.ScreenToWorldPoint(new Vector3(0, 0, 0));
var rightEdge = mainCamera.ScreenToWorldPoint(new Vector3(Screen.width, 0, 0));
var normalDir = shootDir.normalized;
int count = 0;
for (var i = 0; i < dots.Count; i++) {
var dot = dots[i];
dot.GetComponent<SpriteRenderer>().color = color;
var newPos = new Vector2(normalDir.x, normalDir.y) * i * DotGap;
if (hasReversed) {
newPos.x += reversedLeft ? (-rightEdge.x + Constants.BubbleRadius/2) * 2 * count : (rightEdge.x - Constants.BubbleRadius/2) * 2 * count;
//newPos.x += reversedLeft ? (-rightEdge.x + Constants.BubbleRadius) * 2 : (rightEdge.x - Constants.BubbleRadius) * 2;
}
//newPos += normalDir * delta;
dot.transform.localPosition = newPos;
RaycastHit2D hit = Physics2D.Raycast(newPos, shootDir);
if (hit.collider != null) {
float distance = Vector2.Distance(hit.transform.position, newPos);
if (distance < Constants.WhiteCircleRadius + Constants.BubbleRadius) {
dot.SetActive(false);
Debug.Log("Found!: " + distance + " " + hit.collider.name);
break;
} else {
dot.SetActive(true);
}
}
if (dot.transform.localPosition.x <= leftEdge.x + Constants.BubbleRadius) {
hasReversed = true;
reversedLeft = true;
normalDir = Vector2.Reflect(normalDir, Vector2.left);
count++;
}
else if (dot.transform.localPosition.x >= rightEdge.x - Constants.BubbleRadius) {
hasReversed = true;
reversedLeft = false;
normalDir = Vector2.Reflect(normalDir, Vector2.right);
count++;
}
}
}
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()
答案 0 :(得分:2)
如果您想要格式 yyyy-MM-dd hh
,则可以执行以下操作:
SELECT CONVERT(varchar(13),GETDATE(),120);
您可以在文档Date and Time Styles
中找到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
上的任何功能;这将使查询无法显示。
答案 1 :(得分:1)
不要在日期/时间值上使用字符串函数!有非常好的内置函数:
where convert(date, event_time_column) = convert(date, getdate()) and
datepart(hour, event_time_column) = datepart(hour, getdate())
如果您不关心索引的使用,请使用datediff()
:
where datediff(hour, event_time_column, getdate()) = 0
答案 2 :(得分:1)
您可以通过以下2个单独的比较来进行检查。这是用于检查日期和小时部分是否与GETDATE()相同的日期和小时部分。
WHERE CAST(EVENT_TIME_column AS DATE) = CAST(GETDATE() AS DATE)
AND DATEPART(HH,EVENT_TIME_column) = DATEPART(HH,GETDATE())
要检查不等于,只需将=符号替换为!=符号。
此外,如果我猜对了,那么您只是想避免记录运行至今的时间。在这种情况下,您还可以使用以下逻辑过滤数据-
WHERE EVENT_TIME_column < DATEADD(hh, DATEDIFF(hh, 0, getdate()), 0)