如何将SQL mm / dd / yy转换为mm / dd?

时间:2014-08-28 01:52:58

标签: sql datetime

如何将SQL mm / dd / yy日期时间仅转换为mm / dd?在Microsoft服务器上。

谢谢大家。

4 个答案:

答案 0 :(得分:3)

对于日期和时间而言,相信所看到的是存储的内容是一个非常常见的错误。如果字段是date,datetime,smalldatetime或datetime2,那么存储的是整数,而不是字符串。因此,如果该字段是其中之一,那么:

convert(varchar(5),[date_field],1)

format([date_field],'MM/dd') -- mssql 2012 onward

如果信息是一个字符串,那么left()将完成这项工作。

答案 1 :(得分:1)

由于您已指定输入格式,因此输入必须已是字符串。只需截断

即可
cast(dateIn as char(5)).

答案 2 :(得分:0)

您可以使用LEFT返回日期和月份:

SELECT LEFT('12/12/2000', 5) 

答案 3 :(得分:0)

我意识到这并不像你提出的那样直接回答你的问题,但我能给出的最好建议是:不要。

相反,请以原始datetime类型发回字段。数据库不是格式化的地方。而是在应用程序代码中格式化日期。

例如,如果从C#/ .NET应用程序调用SQL Server,则可以从DataReader中检索值,如下所示:

DateTime dt = (DateTime) reader["YourDateTime"];

然后你可以将它格式化为这样的字符串:

string s = dt.ToString("MM/dd");

这将确保正确格式化日期。如果您使用其他语言来调用SQL Server,则可能使用该语言的类似方法。

提到的另一种方法(使字符串中断)的问题之一是原始值可能不会以mm / dd / yyyy开头格式化。这一切都取决于SQL Server运行的环境设置。如果在具有dd / mm / yyyy设置的环境中运行相同的代码,则会出现意外结果。通过使用本机数据类型可以避免这种情况,就像我描述的那样。