我的数据库有6位数的日期格式,数据类型为int('734503'=01/01/2012)。 我已经能够成功地将这些数据转换为字符。
SELECT CONVERT(char(12),dateadd(dd,(date_paid - 639906),'1/1/1753'),101)
FROM vouchers
WHERE date_paid = '734503'
这给我的输出是01/01/2012。
但如果我在这样的查询中搜索转换后的日期。
SELECT CONVERT(char(12),dateadd(dd,(date_paid - 639906),'1/1/1753'),101)
FROM vouchers
WHERE date_paid >= '09/01/2012' AND date_paid <= '09/30/2012'
为什么没有进行转换? 即使我在date_paid字段的WHERE语句中使用CONVERT,它也不应该在那里工作吗?
我想我的问题是如何用转换后的字符日期进行搜索,而不必使用6位数的日期?
你的问题是,你正在比较一个INT列和STRING值,并期望它能像比较日期一样解决。
WHERE date_paid >= '09/01/2012' AND date_paid <= '09/30/2012' -- date_paid is an INT (according to your question) -- '09/01/2012' is a STRING
由于数据类型的不同,这里有一个 隐含的CAST()在那里。 实际上,你在做...