我的日期和时间的格式如下:
Get-Date -f "M/d/yyyy h:mm tt"
看起来像这样
4/16/2019 4:19 PM
所以现在,我只想选择时间大于8:00 AM和5:00 PM的那些对象,但是日期没有任何意义,我希望每个日期都选择相同的时间。
我该怎么做才能在时间上使用where对象选择,但是在日期上却不加区分?
答案 0 :(得分:0)
您应该始终根据[字符串]表示法区分[日期时间]和它的语言环境/用户设置。
您只能使用select custid , sum(case when valuetype='A' then cost else 0 end) A,
sum(case when valuetype='B' then cost else 0 end) B
,sum(case when valuetype='C' then cost else 0 end) C
from t group by custid
类型进行计算。隔离时间分量:
[datetime]
或类似地
> ([datetime]::now).TimeOfDay
Days : 0
Hours : 19
Minutes : 7
Seconds : 8
Milliseconds : 413
Ticks : 688284139558
TotalDays : 0,796625161525463
TotalHours : 19,1190038766111
TotalMinutes : 1147,14023259667
TotalSeconds : 68828,4139558
TotalMilliseconds : 68828413,9558
一旦涉及格式(> (Get-Date).TimeOfDay
Days : 0
Hours : 19
Minutes : 7
Seconds : 34
Milliseconds : 841
Ticks : 688548416521
TotalDays : 0,796931037640046
TotalHours : 19,1263449033611
TotalMinutes : 1147,58069420167
TotalSeconds : 68854,8416521
TotalMilliseconds : 68854841,6521
或Get-Date -f "h:m:s"
),您就会得到一个字符串,该字符串首先必须转换回.ToString('T')
。
根据@PetSerAls的宝贵提示,您可以使用:
[datetime]
要检查TimeOfDay组件是否在定义的工作时间内。