【发布时间】:2022-01-28 12:25:30
【问题描述】:
您好,我想过滤两个波斯日期之间的数据。 注意:波斯日期是字符串数据类型,例如:“1400/02/23” 当我想在 SQL Server 中过滤我的表时,我只需编写如下代码:
SELECT * FROM Table
WHERE Date >="1400/01/02" AND Date <="1400/05/10"
但在 C# 语法中,我不知道如何获取两个字符串之间的日期以在我的过滤器后端代码中使用。如果我简单地比较错误会引发字符串类型数据不能使用比较运算符。 如果有人帮助我,我会很高兴和感激
【问题讨论】:
-
这是一个无效的查询。 SQL(不仅仅是SQL Server)中的
"用于引用对象名,例如表名。为避免本地化问题,您应该使用YYYY-MM-DD或YYYYMMDD格式的日期文字,例如BETWEEN '14000102和'14000510'` 但是远更好的解决方案是使用参数化查询并传递日期作为代码中的实际日期类型参数 -
在 C# 中,您可以尝试使用合适的文化设置
DateTime.Parse。见文章here -
date is a string data type这是一个主要的设计错误。请改用适当的日期类型,例如date或datetime2。存储字符串意味着您不知道该字段中实际存储了什么,格式是什么,甚至元素的顺序是什么。在 C# 中使用适当的类型,DateTime -
谢谢@PanagiotisKanavos 我不是数据库的设计者我只是使用它,我想我会使用你的建议我的意思是使用 YYYYMMDD 格式的日期
标签: asp.net-mvc string filter comparison-operators persian-calendar