我有一张桌子,上面列出了所有发生在11月的日期。我写了这个查询
select id,numbers_from,created_date,amount_numbers,SMS_text
from Test_Table
where
created_date <= '2013-04-12'
此查询应返回11月(11月)中发生的所有事情,因为它发生在日期“ 2013-04-12”(12月)之前
但它只是返回的可用日期是发生在天,比04较少(2013- 04 -12)
难道只是比较一天的一部分?而不是整个日期?
如何解决这个问题?
Created_date的类型为date
日期格式默认为yyyy-dd-MM
代替意义取决于当地文化的“ 2013-04-12”,而使用公认的文化不变格式“ 20130412”。
如果要与12月4日进行比较,则应输入'20131204'。如果您想与4月12日进行比较,则应输入'20130412'。
SQL Server文档中的“编写国际Transact-SQL语句”一文解释了如何编写区域性不变的语句:
使用其他API或Transact-SQL脚本,存储过程和触发器的应用程序应使用不分隔的数字字符串。例如,yyyymmdd为19980924。
编辑
由于您使用的是ADO,因此最好的选择是对查询进行参数化并将日期值作为日期参数传递。这样,您就可以完全避免格式问题,并且还可以获得参数化查询的性能优势。
更新
要在文字中使用ISO 8601格式,必须指定所有元素。引用日期时间文档的ISO 8601部分
要使用ISO 8601格式,必须指定格式中的每个元素。这还包括以格式显示的T,冒号(:)和句点(。)。
...第二部分的分数是可选的。时间部分以24小时格式指定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句