有人可以告诉我SQL和C#的方式来格式化我的日期字符串,如下所示吗?
2/24/2012 22:00
注意:我不需要秒。
下式给出:
declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'
select @myDate
我正在显示上面的代码段,表明日期的源类型是varchar。
答案 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");