如何将我的约会设置为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。

如何将我的约会设置为24小时

在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)