如何将我的约会设置为24小时
本文关键字:设置 24小时 约会 我的 | 更新日期: 2023-09-27 18:25:41
有人能告诉我一种在SQL和C#中格式化日期字符串的方法吗?
2/24/2012 22:00
注意:我不需要时间。
给定:
declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'
select @myDate
我在上面显示的代码片段表明日期的源类型是varchar。
在C#中,您可以将参数传递给ToString()方法,以获得您想要的结果。这里有很好的记录:http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm
根据这一点,你应该试试:
myDate.ToString("MM/dd/yyyy HH:mm");
在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");
在SQLServer2012中,您将能够在T-SQL:中使用几乎相同的语法
SELECT FORMAT(SYSDATETIME(), 'M/d/yyyy HH:mm');
撰写时的结果:
2/25/2012 00:38
(去年8月,当我第一次在CTP3中看到FORMAT()
功能时,我在博客中谈到了它的新功能。这是非常强大的东西。)
在我2003年写的这篇常见问题解答文章中,您可以看到一个表,其中显示了与CONVERT
一起使用的所有有效样式。我还在另一篇常见问题解答文章中描述了如何制作自己的函数,但由于前面的零,它没有明确涵盖您想要的格式。
对于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");
这可能不是最有效的方法,但我认为它应该有效:
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)