在SQL Server存储过程中格式化日期的最佳方法
本文关键字:日期 最佳 方法 格式化 过程中 SQL Server 存储 存储过程 | 更新日期: 2023-09-27 18:07:44
这是我使用date
类型的SQL Server的示例数据
TglUnggah = 30/03/2014
我需要日期格式'日/月/年'
存储过程
ALTER proc [dbo].[SP_ViewFile]
AS
BEGIN
SELECT
IdFile, IdAkses, NamaFile, Count,
CONVERT(VARCHAR(10), TglUnggah, 103) AS TglUnggah,
Keterangan, Role, Url
FROM
tbFile
END
在ASP中运行此存储过程时。. NET,数据为30/03/2014
,但详细查看格式更改为30/03/2014 0:00:00
,无法更新
在SQL Server/存储过程/ASP.NET中使用格式dd/MM/yyyy
的最佳方法是什么?
以上皆非。尽可能使用DateTime。只有在需要向用户显示输出时才转换为格式化字符串。此时,您应该使用适合该用户区域性的任何格式。
DateTime的优点是易于进行操作,并且您不必担心在任何地方转换格式。DateTime实际上是对特定日期之后的刻度数的包装(您不需要知道这一点),因此没有DateTime对象的固有字符串表示(您确实需要知道这一点)。
在c#中可以使用DateTime。TryParseExact
在SQl server中可以使用Cast和Convert
您可以使用以下程序:
public static string ConvertDtFormat(string dateTimeString)
{
dateTimeString = dateTimeString.Trim();
while (dateTimeString.Contains(" "))
{
dateTimeString = dateTimeString.Replace(" ", " ");
}
if (dateTimeString == null || dateTimeString.Length == 0)
{
return string.Empty;
}
else
{
DateTime convertedDateTime = new DateTime();
string userDateFormat = HMS.DEFAULT_DATE_FORMAT;
try
{
if (userDateFormat.Trim().Contains("dd/MM/yyyy"))
convertedDateTime = DateTime.ParseExact(dateTimeString, format_dmy, CultureInfo.InvariantCulture,
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite);
else if (userDateFormat.Trim().Contains("MM/dd/yyyy"))
convertedDateTime = DateTime.ParseExact(dateTimeString, format_mdy, CultureInfo.InvariantCulture,
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite);
return convertedDateTime.ToString("MMM dd, yyyy hh:mm tt");
}
catch
{
return "Invalid DateTime";
}
}
}
还有一件事需要考虑。当全球化时,您可能需要处理不同的时区,因此您可能希望使用日期时间偏移来存储日期,从而允许您存储UTC时间。
这个解决方案是谁想要在整个应用程序中以'dd/mm/yyyy'显示日期,而不使用与时区相关的。否则,您需要转换/强制转换要显示的数据。
这个问题最好的解决办法是:-写在之前到日期的操作完成
Set Dateformat DMY
了解dateformat的基本规则:-
http://blog.sqlauthority.com/2007/09/28/sql-server-introduction-and-example-for-dateformat-command/CREATE PROCEDURE SPNAME
(
parameter...
)
as
BEGIN
SET DATEFORMAT DMY
OTHER STATEMENT
END
你可以测试
Set Dateformat dmy
Declare @date datetime = '10-06-2012'
select @date
它只是转换你的日期时间格式,你需要
http://msdn.microsoft.com/en-IN/library/ms189491.aspxhttp://forums.asp.net/t/1740263.aspx?SET + DATEFORMAT + dmy +选择+ + Table1 +中+类型+ ee +订单+ + +日期+是+ datetime + desc