【问题标题】:User Input Date Range (mm/dd/yyyy)用户输入日期范围 (mm/dd/yyyy)
【发布时间】:2017-07-14 04:07:59
【问题描述】:

我正在使用 SQL 并试图创建一个允许用户输入 2 个日期的 WHERE 语句,并填充这些日期之间(包括)这些日期之间的所有数据。

我的代码目前是 WHERE table.date BETWEEN 'StartDate' AND 'EndDate'; 但是当我尝试执行查询时,我收到一条错误消息,提示“从字符串转换日期和/或时间时转换失败”。我还尝试删除 '' 并收到另一个错误,显示“列名无效”

如何解决此问题,以便允许用户输入日期 (mm/dd/yyyy)?

客户 |价格 |日期 |物品 |

编辑

这是我的实际代码:

SELECT [Customer],[Price],[Date],[Items] FROM table WHERE table.date BETWEEN ‘StartDate’ AND ‘EndDate’;

【问题讨论】:

  • 去掉StartDateEndDate周围的单引号。
  • 我在上面说过我已经尝试过了,它只是告诉我“列名无效”
  • 错误提示您正在使用 sql-server。使用适当的标签。
  • @nola94 你能在你的帖子中展示你的表格结构吗? :)
  • 另外作为说明,对于列名,最好将它们包含在反引号中以避免错误执行(例如,如果出于某种原因描述了列名)

标签: sql sql-server


【解决方案1】:

如果你使用 Mysql,你可以将 startdate 和 enddate 作为字符串转换为日期

between str_to_date(Startdate,'%m/%d/%Y') and str_to_date(EndDate,'%m/%d/%Y')  

对于 Sql 服务器

between convert(date, Startdate) and convert(date, Enddate)

例如,您需要如何运行所有脚本,我添加了屏幕截图。假设开始日期是@str1,结束日期是@str2

Declare @Str1 Varchar(100)='12/14/2015'
Declare @Str2 Varchar(100)='12/14/2017'

select * from #temp where CONVERT(date,dat) between convert(date,@str1)
and CONVERT(date,@str2)

输出截图:-

【讨论】:

  • 我收到一条错误消息,内容为“'str_to_date' 不是可识别的内置函数名称。”
  • 您使用的是哪个 DBMS? MySQL 还是 SQL Server?
  • Microsoft SQL Server 管理工作室
  • 不要发布代码图片。将代码粘贴到您的答案中并设置格式。
  • @nola94 看到所有的对话后,认真什么?你投反对票了吗? :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多