用24小时格式化我的日期的方法

时间:2012-02-25 03:19:48

标签: c# sql sql-server

有人可以告诉我SQL和C#的方式来格式化我的日期字符串,如下所示吗?

2/24/2012 22:00

注意:我不需要秒。

下式给出:

declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'

select @myDate

我正在显示上面的代码段,表明日期的源类型是varchar。

4 个答案:

答案 0 :(得分:2)

在C#中,您可以将参数传递给ToString()方法,以获得您想要的内容。这里有详细记录:http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

根据你应该尝试:

myDate.ToString("MM/dd/yyyy HH:mm");

答案 1 :(得分:2)

在SQL Server< = 2008 R2中,您可以说:

SELECT  CONVERT(CHAR(10), CONVERT(DATETIME, @myDate), 101) 
+ ' ' + CONVERT(CHAR(5),  CONVERT(DATETIME, @myDate), 8)

然而,这会产生你似乎不想要的前导零(并且没有其他人似乎抓住了)。如果你想保持你的m / d / yyyy格式(不管怎么说这是不可取的 - 最好使用像yyyy-mm-dd这样的语言和区域模糊格式),你可能最好只保留那部分字符串按原样,只是按如下方式转换时间:

SELECT CONVERT(CHAR(5), CONVERT(DATETIME, '10:00 PM'), 8);

当然,对于任意日期,您可以按照以下方式强制执行:

SELECT RTRIM(MONTH(@myDate)) + '/' + RTRIM(DAY(@myDate)) + '/' + RTRIM(YEAR(@myDate))

将这些结合起来转换为C#:

DateTime.Now.ToString("M/d/yyyy HH:mm");

在SQL Server 2012中,您将能够在T-SQL中使用几乎相同的语法:

SELECT FORMAT(SYSDATETIME(), 'M/d/yyyy HH:mm');

撰写本文时的结果:

2/25/2012 00:38

(当我第一次看到CTP3中的功能时,我blogged about the new FORMAT() capabilities last August。这是非常强大的功能。)

您可以在this FAQ article I wrote in 2003中看到一个表格,其中显示了CONVERT中使用的所有有效样式。我还描述了如何创建自己的函数in a different FAQ article,但由于前导零,它没有明确地涵盖您再次使用的格式。

答案 2 :(得分:1)

这可能不是最有效的方法,但我认为它应该有效:

declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'

DECLARE @thisDate DATETIME
SET @thisDate = CAST(@myDate AS DATETIME)

SELECT CONVERT (NVARCHAR(10),@thisDate, 101) + ' ' + CONVERT(NVARCHAR(5), @thisDate, 8)

答案 3 :(得分:1)

对于SQL,您可以尝试:

DECLARE @date DATETIME;
SET @date = CONVERT(DATETIME, @myDate, 20);
SELECT convert(varchar(10), @date, 101) + convert(varchar(5), @date, 114);

对于C#,

DateTime convertedDate = DateTime.Parse('2/24/2012 10:00 PM');
String newDateStr = convertedDate.toString("MM/dd/yyyy HH:mm");