我正在尝试从包含格式化为DateTime的时间的列中提取数字小时值。例如,以下是该列中的几条记录:
Time Aired
4:20:00 PM
12:51:00 PM
3:17:00 PM
3:24:00 PM
从这一栏我试图提取4,12,3,3等.DATEPART功能似乎是一个很好的选择。但是,当我尝试使用如下所示的功能时,我会提示输入Hour的参数。这让我相信我正在错误地实现DATEPART。有人能发现问题可能是什么吗?可能问题是我的日期时间格式化列只包含时间值吗?
SELECT DATEPART(hour, [Time Aired]) AS Foo
FROM DRTV_CentralOnly
WHERE [Time Aired] <> null;
答案 0 :(得分:2)
此documentation表示时间间隔部分(hours
)应该用引号括起来,它应该是h
,而不是hours
;因此,试试这个:
SELECT DATEPART("h", [Time Aired]) AS Foo
FROM DRTV_CentralOnly
WHERE [Time Aired] is not null;
我的另一个问题是,你不应该写WHERE [Time Aired] is not null
吗?
答案 1 :(得分:0)
您可以使用HOUR功能代替DATEPART。它提供小时数而不管AM / PM
SELECT HOUR([Time Aired]) AS Foo
FROM DRTV_CentralOnly
WHERE [Time Aired] <> null;
答案 2 :(得分:0)
您可以通过几种方式从查询表达式中的MS Access Date
值中仅 仅提取小时数 。
以下是一些方法:
DatePart("h", [yourFieldName]) 'returns a variant (Integer)
Format([yourFieldName],"h") 'returns a variant (String)
Hour([yourFieldName]) 'returns a variant (Integer)
在Access中,我更喜欢最后一种方法,因为它简短明了。
基于该问题,我怀疑您正在查看SQL Server DATEPART
function的文档,该文档存在一些细微的差异。
不要误以为SQL都是一样的。有 个相似之处,但语法并不总是可以互换的,尤其是在谈论MS Access时。在搜索有关Access的答案时,我总是在我的Google搜索查询中加入 mc access
,甚至仍然,当您找到可能的答案时,请确认您正在查看的页面实际上是为Access编写的。
有些事情您没有要求寻求帮助,但是您需要帮助了! :)确实这是一个旧帖子,所以您必须已经弄清楚了自己的错误,或者您仍然陷在错误中,或者公司一直在错误地发布错误或错误消息。过去6年的报告。
[myFieldName] Is Not Null
与[myFieldName] <> Null
不同。简短的解释是 Null不是值。 Null可以解决周围的问题。它不是不是零,不是不是一个空''
的字符串,也不是ZLS(零长度字符串)。
您使用<> NULL
标准的方式可能是因为语法不正确,查询未返回没有记录。
例如:您认为这个简单的方程会产生什么结果?
(Null+2)*3
...如果您说6
,您错 !
结果是:NULL
。基本上,任何碰到NULL
的事物都会变成NULL
。
再举一个例子。 在VBA中运行此:
If Null = Null Then MsgBox "Null equals Null." Else MsgBox "Null does NOT equal Null."
...您可能不 得到您期望的答案!
出于准确性的考虑,必须按预期方式使用所有运算符,包括将Is
和Is Not
运算符与the NULL
Statement一起使用。
DatePart
Function (Access Query or VBA) Format
Function (Access Query or VBA) Hour
Function (Access Query or VBA) NULL
s Terribly Wrong in SQL Server Null
values in Microsoft Access Null
(mathematics) Is
Operator 准备意外数据:
这实际上仅是 barely ,但使我成为LMAO,因为我从不曾想过为此做准备,所以我认为应该分享:
...这反过来使我想起那个讨厌的小孩, Bobby Tables。