C# 以dd-mm-yyyy-sql server格式从字符串获取年份

C# 以dd-mm-yyyy-sql server格式从字符串获取年份,c#,sql,datetime,sql-server-ce,C#,Sql,Datetime,Sql Server Ce,我正在SQL server compact edition中以“dd-mm-yyyy”格式将日期存储为“varchar”类型。我想检索“yyy”部分,我将使用它对数据库中的记录进行分组。我尝试将其转换为DateTime格式,结果出现错误“日期或时间部分无效”。您可以改用: select substring(fieldName, 6, 10) from table 交替地 SELECT Year(CAST(fieldName as datetime) as DateField) from Tab

我正在SQL server compact edition中以“dd-mm-yyyy”格式将日期存储为“varchar”类型。我想检索“yyy”部分,我将使用它对数据库中的记录进行分组。我尝试将其转换为DateTime格式,结果出现错误“日期或时间部分无效”。

您可以改用

select substring(fieldName, 6, 10) from table
交替地

SELECT Year(CAST(fieldName as datetime) as DateField) from Table
希望这会有帮助

试试看

select year(Convert(datetime,fieldName,103)) as MyYearResult

这将更有帮助

你能用你试过的代码更新这个问题吗你不应该把日期存储为字符串——那样只会自找麻烦。使用
DATE
DATETIME
数据类型!我觉得这篇文章很有启发性。我不再将日期存储为字符串。谢谢你指导我走向最佳实践。非常感谢。我使用“子字符串”函数来获取年份。我想SQL server compact edition不支持“Year”函数。谢谢,我认为LotusSQLServerCompact版不支持“年”功能。这给了我一个错误。