【问题标题】:SELECT string date rows In a Date Range using variable使用变量在日期范围内选择字符串日期行
【发布时间】:2013-01-09 00:26:49
【问题描述】:

美好的一天!我在使用变量过滤日期范围内的字符串日期时遇到问题。这是我的示例查询不起作用:

Select * from table_name where datee >= '" & result & "' and datee1 <= '" & result1 & "';

此代码显示相同的日期,2012-12-31 和 2012-12-31.. 我想要的是大于等于将显示为 2012-12-01,小于或等于是 2012-12 -31 .. 这是我的日期范围代码:

Dim datee, datee1, result, result1 as string
Dim dateTime As Date
Dim dTime As Date
dateTime = Date.Parse(datee)
dTime = Date.Parse(datee1)
result = dateTime.ToString("yyyy-MM-dd")
result1 = dTime.ToString("yyyy-MM-dd")

【问题讨论】:

  • 如果您尝试使用静态值而不是传递变量,它是否有效?在标题中您提到您的数据库datestring,这意味着如果要将其与日期进行比较,则需要将其转换为日期.. 不是吗?
  • 你可以像Dim dTime1 As Date = Now Console.WriteLine(dTime1.ToString("yyyy-MM-dd"))这样格式化日期,我猜你忘了设置两个Dates

标签: mysql vb.net date date-range


【解决方案1】:

请试试这个:(假设您的变量保存正确的日期格式和值,并且数据库字符串日期格式为YYYY-MM-DD

Select * from table_name where Str_to_Date(datee,'%Y-%m-%d') >= 
'" & result & "' and Str_to_Date(datee1,'%Y-%m-%d') <= '" & result1 & "'
;

因为 12-01 到 12-31 涵盖了 12 月份.. 你可以试试:

Select * from table_name where Month(Str_to_Date(datee,'%Y-%m-%d')) = 12
;

因此,

Select * from table_name where 
Month(Str_to_Date(datee,'%Y-%m-%d')) = " & Month(result1) & "
;

在示例演示表中使用month函数和字符串日期格式的查询非常仔细地检查演示:

【讨论】:

  • 它不工作.. 它仍然在 Str_to_Date(datee,'%Y-%m-%d') >= '" & result & "'.. what i 显示 2012-12-31想要的是 2012-12-01
  • 你的dateedate1 日期字符串是什么样子的,你能给我们看个例子吗?
  • 我正在执行来自 excel 的扫描。示例日期是 2012 年 12 月 31 日星期一,它将所有日期传递到 vb.net 中的一个变量中,我将其转换为日期并再次转换到将插入数据库的字符串。插入后,'2012-12-31'字符串..我将进行搜索查询以获取开始日期和结束日期。
  • 我只想知道你的datee日期字符串的格式,是像Monday, December 31, 2012还是2012-12-31
  • dateTime.ToString("yyyy-MM-dd")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
相关资源
最近更新 更多