如何将SQL mm / dd / yy日期时间仅转换为mm / dd?在Microsoft服务器上。
谢谢大家。
答案 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设置的环境中运行相同的代码,则会出现意外结果。通过使用本机数据类型可以避免这种情况,就像我描述的那样。