当前位置: 首页 > 知识库问答 >
问题:

如何根据自定义格式日期列中的特定月份选择 SQL Server 记录

阙弘博
2023-03-14

我正在使用SQLServer 2008,我想在Windows Form Application中的目标数据库表的日期字段中显示一些基于特定月份的记录。我对日期字段使用了自定义格式(dd-MM-yyyy),在将记录插入数据库时,存储日期的数据类型是nvarchar

这就是我的数据库表的样子:

PaymentID    PaymentAmount       Date          Comments
      1        30000             27-05-2020    Some Comments
      2        45000             22-06-2020    Some Comments
      3        65000             29-06-2020    Some Comments
      4        33000             30-07-2020    Some Comments
      5        22000             30-07-2020    Some Comments

对于记录选择,我已经通过了特定的月份,比如6月,我想检查是否有任何付款记录保存在2020年6月。我想在数据网格视图中显示此记录。

有没有办法从nvarchar日期格式中获取所需的月份?任何帮助将不胜感激。

共有3个答案

阮阳曦
2023-03-14

由于您的数据类型是 nvarchar,因此您需要在选择中使用 substr() 函数来解析月份和年份。如果要使用数值进行搜索,则需要将子字符串转换为int,否则您可以将子字符串与字符串值进行比较,例如

cast(substr(date, 4, 2)) = 7

substr(date, 4, 2) = '07'

但是实际上,如果你可以选择,正如Dan所说,你应该将日期列的数据类型更改为日期。SQL服务器有很多有用的功能来处理日期,如果你的日期在nvarchar中,你就不能真正利用这些功能。

吉玉石
2023-03-14

你太接近了。月()函数需要一个整数。datename()函数将使用一个字符串。看看这个;

https://sqlhints.com/2015/06/07/how-to-get-month-name-from-date-in-sql-server/

戚京
2023-03-14

不要将日期存储为字符串!这是一种糟糕的做法,原因有很多:效率和数据完整性立即浮现在脑海中。您应该首先将列转换为< code>date日期类型。类似这样的事情应该会起作用:

update mytable set [date] = try_convert(date, 105);
alter table mytable alter column [date] date;

第一条语句尝试将每个值转换为date,并将结果重新分配给字符串列;SQL Server将根据服务器的区域设置转换回字符串。无效值变为nulls。然后可以安全地更改列的数据类型。

然后,您可以轻松筛选2020年6月的表格,如下所示:

select *
from mytable
where [date] >= '20200701' and [date] < '20200801'

如果您无法使用当前的字符串数据类型,并且由于某种原因无法更改它,那么您可以使用字符串函数。对于您当前的格式,我建议:

where [date] like '%-07-2020'
 类似资料:
  • 我有一个表,其中存储了工资单记录及其创建日期。默认情况下,我想显示当前月份的记录。 我想查找当月的所有记录。有些单据可能在每月1日生成,有些在10日生成,但它应该显示给定月份的所有行。 我使用这个语句来获取本月第一天存储在表中的记录,但是2号或3号保存的记录呢?

  • 本文向大家介绍如果日期为VARCHAR格式,如何从MySQL中选择特定记录?,包括了如果日期为VARCHAR格式,如何从MySQL中选择特定记录?的使用技巧和注意事项,需要的朋友参考一下 为此,请使用STR_TO_DATE()。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 如果日期为VARCHAR格式,则下面是从MySQL中

  • > 总结一下问题:我试图了解如何以特定的方式自定义html5日期选择器,具体来说,格式类似于8月31日星期二的[日历图标],右侧带有插入符号,可以打开日期选择器。经过初步搜索,我找到了这些用于自定义日期输入文本框的伪元素。 预期的结果是,这些定制选项在大多数情况下都可以满足定制日期选择器的要求,但到目前为止,我还无法应用这些选项来完全满足目标。例如,我试图去掉文本框中的第二个正斜杠(31之后的代码

  • 问题内容: 所以我的代码如下: 我正在做一个测试,看是否可以过滤月份,所以它只显示11月的日期,但这没有用。它给了我以下错误:AttributeError:’Int64Index’对象没有属性’month’。 如果我做 然后我得到类’pandas.tslib.Timestamp’,这使我相信存储在数据框中的对象类型是Timestamp对象。(我不确定之前的错误是“ Int64Index”来自何处)

  • 本文向大家介绍iOS自定义日期选择器,包括了iOS自定义日期选择器的使用技巧和注意事项,需要的朋友参考一下 前言 封装了一个日期选择器,解决两个问题: 1、点击textField,键盘弹出和日期选择器弹出的逻辑处理; 2、同一个界面需要多次用到日期选择器时,判断点击的textField; 一、封装日期选择器类YCDatePickerView 1、新建一个类,基于UIView,取名YCDatePic

  • 我想以“dd/mm/yyyy hh:mm”格式编写excel文件日期,例如2022年3月12日08:30 问题是我有所有这些值作为参数...我存储在数据库中的字段是: 我的目标是检索所有这些内容,并希望进行组合,得到“dd/mm/yyyyy hh:mm”的结果。 我可以将它们组合起来创建那个日期格式吗?我这样问是因为如果我在excel中以字符串的形式编写,那么这种类型可能会导致excel图形等出现