【问题标题】:SQL Server - Need to obtain records before current year and month from date text fieldsSQL Server - 需要从日期文本字段获取当前年份和月份之前的记录
【发布时间】:2015-12-01 01:48:43
【问题描述】:

我有一个表格,以文本字段的形式保存每条记录的日期。我有三个这样的字段(yyyy 和 mm 和 yyyymm)。例如,我有一个显示“201412”的字段(它是一种不带双引号的文本数据类型。在 SQL Server 中,我只想查询和提取年份和月份小于当前年份和月份的记录. 因此,截至 2015 年 11 月 30 日撰写本文时,我想要 2015 年 11 月之前的所有记录。我想将其嵌入到 Select 语句中。有什么想法吗?

【问题讨论】:

  • 你试过什么?演员表(YourColumn + '01' as date)怎么样?如果可能的话,您应该停止将日期信息存储在字符串中。使用起来很痛苦,而且几乎不可能进行验证。您应该始终使用正确的数据类型。
  • 如果你能展示你所做的事情会更好,以获得更好的答案。

标签: sql-server


【解决方案1】:

一个相对简单的方法是使用日期算术:

where yyyy * 12 + mm < year(getdate()) * 12 + month(getdate())

实际上,如果您愿意,可以将12 替换为100

【讨论】:

  • 戈登,非常感谢。它运作良好。但我忘了提到我的月份是固定长度的。所以 August 存储为 08。我不能将工作中的系统日期更改为今年早些时候的月份,以便测试它是否仍然可以工作到 8 月,我正在寻找早于 201508 的记录。你认为它仍然可以全年使用?
  • @PeteS 。 . .实际上,这并不会改变任何事情。在算术中使用时,SQL Server 会自动将其转换为整数。
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 2023-03-20
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
相关资源
最近更新 更多