使用 DatePart(hour,Datetime) 提取 'hour' 后将小时转换为 12 小时格式
Convert hour to 12 hr format after extracting 'hour' using DatePart(hour,Datetime)
我有一个小问题要解决。我的数据库中目前有一个日期时间字段。我已经在做的是从日期中提取小时、分钟和 AM/PM 部分,因为我必须将每个值填充到一个单独的字段中。
查询如下所示:
Select 'Hour'=(SELECT DATEPART(HOUR, Date1)),
'Minute'=(SELECT DATEPART(MINUTE, Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, Date1) > 11 THEN 'PM' ELSE 'AM' END)
from tblA
所以在这里我可以拥有 3 个值。但是我遇到的问题是 HOUR 部分,默认情况下以 24 小时格式显示。有什么方法可以将其转换为 12 小时制吗?
我知道我可以使用格式 = 100 将时间转换为 12HR 格式,如下所示:
select convert(varchar(20),GetDate(),100)
然而,当我仅将其应用于 'HOUR' 值时,它不会更改格式。还有其他方法可以实现吗?
澄清一下,如果我的 table 中的日期时间值是:2018-11-22 14:30:00.000
我希望得到如下所示的结果:
Hour Minute PM
2 30 PM
您可以使用取模运算符。
CASE
WHEN DATEPART(HOUR, Date1) % 12 = 0 THEN
12
ELSE
DATEPART(HOUR, Date1) % 12
END
试试这个,
Declare
@Date1 dateTime;
Set @Date1 ='2018-11-22 14:30:00.000';
Select 'Hour'= Case When (SELECT DATEPART(HOUR, @Date1)) >12 Then (SELECT DATEPART(HOUR, @Date1))-12 Else (SELECT DATEPART(HOUR, @Date1)) End,
'Minute'=(SELECT DATEPART(MINUTE, @Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, @Date1) > 11 THEN 'PM' ELSE 'AM' END)
我有一个小问题要解决。我的数据库中目前有一个日期时间字段。我已经在做的是从日期中提取小时、分钟和 AM/PM 部分,因为我必须将每个值填充到一个单独的字段中。
查询如下所示:
Select 'Hour'=(SELECT DATEPART(HOUR, Date1)),
'Minute'=(SELECT DATEPART(MINUTE, Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, Date1) > 11 THEN 'PM' ELSE 'AM' END)
from tblA
所以在这里我可以拥有 3 个值。但是我遇到的问题是 HOUR 部分,默认情况下以 24 小时格式显示。有什么方法可以将其转换为 12 小时制吗?
我知道我可以使用格式 = 100 将时间转换为 12HR 格式,如下所示:
select convert(varchar(20),GetDate(),100)
然而,当我仅将其应用于 'HOUR' 值时,它不会更改格式。还有其他方法可以实现吗?
澄清一下,如果我的 table 中的日期时间值是:2018-11-22 14:30:00.000
我希望得到如下所示的结果:
Hour Minute PM
2 30 PM
您可以使用取模运算符。
CASE
WHEN DATEPART(HOUR, Date1) % 12 = 0 THEN
12
ELSE
DATEPART(HOUR, Date1) % 12
END
试试这个,
Declare
@Date1 dateTime;
Set @Date1 ='2018-11-22 14:30:00.000';
Select 'Hour'= Case When (SELECT DATEPART(HOUR, @Date1)) >12 Then (SELECT DATEPART(HOUR, @Date1))-12 Else (SELECT DATEPART(HOUR, @Date1)) End,
'Minute'=(SELECT DATEPART(MINUTE, @Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, @Date1) > 11 THEN 'PM' ELSE 'AM' END)