我正在使用SQL Server 2016,我正在尝试将军事时间转换为标准时间。军事时间是一个4位整数,我正在尝试获得标准时间格式(00:00 am / pm)。
我运行了一个简单的CASE
语句,使其成为标准但没有':'和'am / pm'。
CASE
WHEN SA_BEGTIME between 0 and 1259 then SA_BEGTIME
WHEN SA_BEGTIME between 1300 and 2400 then SA_BEGTIME - 1200
ELSE ''
END as Time
如何将其转换为格式正确:'00:00 am / pm'
谢谢!
答案 0 :(得分:3)
您可以将其拆分为具有整数除法和模数的部分,将其转换为VARCHAR,然后将其转换为TIME:
<?php
$to = 'mail@example.com';
$name = $_POST['email'];
and so on ..
..
..
mail(mail@example.com, name, (here goes email, name, subject, textarea, tel) as message in new lines);
and somewhere i have to write from what emial im sending to example@gmail.com and what is it's password i guess
?>
或者您可以使用新的TIMEFROMPARTS()函数(SQL Server 2012 +):
declare @x int = 109
select cast(cast(@x / 100 as varchar(2)) + ':' + cast(@x % 100 as varchar(2)) as time)
然后您可以根据需要对其进行格式化。
答案 1 :(得分:1)
假设您的数据存储为整数,并且假设没有存储无效时间(即2400以上或以下的值),您可以使用以下内容:
declare @TheTime int = 900
select right(convert(varchar(20),
cast(stuff(right('0000' + convert(varchar(4),@TheTime),4),3,0,':')
as datetime),100),7)
-------
9:00AM
对不起解决方案的密度。这就是我所做的:
我确信有更优雅的方式,但这个方法对我很有用。
答案 2 :(得分:1)
我正在使用@BaconBits提供的解决方案,但我不得不进行调整,因为2400
是一个有效的表示,但它失败了。这是经过调整的解决方案:
declare @x int = 2400
select TIMEFROMPARTS((@x / 100) % 24,@x % 100, 0, 0, 0)
答案 3 :(得分:0)
我需要将一个军事时间的datetime
字段转换为AM / PM格式的时间。效果很好。
Left(convert(varchar(20), cast(MyDateField as time),100),7)
答案 4 :(得分:-1)
您可以使用转换来获得适当的时间表示。
declare @mt varchar(4) = '1500'
select convert(varchar, cast(left(@mt, 2) + ':' + right(@mt, 2) as time), 0)