Sql 按日期筛选问题
我正在尝试从名为Sql 按日期筛选问题,sql,sql-server,tsql,date,alteryx,Sql,Sql Server,Tsql,Date,Alteryx,我正在尝试从名为Date\u of_Pay的列中筛选日期(使用db工具中的alteryx),该列当前是格式为mm/dd/yyyy的字符串。我尝试了以下方法: select table.* from table where cast(Date_of_Pay AS date) >= '20140101' AND cast(Date_of_Pay AS date) <= '20141231' -- alternatively I have tried -- where convert(d
Date\u of_Pay
的列中筛选日期(使用db工具中的alteryx),该列当前是格式为mm/dd/yyyy
的字符串。我尝试了以下方法:
select table.*
from table
where cast(Date_of_Pay AS date) >= '20140101' AND cast(Date_of_Pay AS date) <= '20141231'
-- alternatively I have tried
-- where convert(date, Date_of_Pay, 101) >= '20140101' AND convert(date, Date_of_Pay, 101) <= '20141231'
选择表格*
从桌子上
where条件中的where cast(按日期付款的日期)>='20140101'和cast(按日期付款的日期)='20140101'和convert(日期,按日期付款的日期,101)双方应具有相同的数据类型
您可以将两者转换为日期,如下所示:
Select table.*
from table
where convert(date,Date_of_Pay,101) = convert(date,’20140101’,112)
我在一个表中重新创建了ask,该表以MM/dd/yyyy的格式存储[Date\u of\u Pay]字符。小问题,你的问题有一个错误,mm是分钟而不是月。我使用以下查询使用了connectindb工具。我确保先在SSMS中检查查询
SELECT table.*
FROM table
WHERE CAST(Date_of_Pay AS DATE) >= '20140101'
AND CAST(Date_of_Pay AS DATE) <= '20141231'
选择表格*
从桌子上
何处铸造(按日期付款)>='20140101'
和CAST(Date of Pay AS Date),您必须向我们展示一些示例数据,以便我们提供任何见解。然而,有大量关于从字符串到字符串转换日期的信息。。。你不必看得很远就能找到你需要的东西。官方文件总是一个很好的起点。将日期存储为日期数据类型而不是字符串也是如此。此外,Alteryx真的是这个问题的相关标记吗?日期和时间数据类型没有格式,因此不能存储为一种格式;它们存储为二进制值。但是,如果您存储为varchar
,则会遇到一个巨大的问题,需要修复您的设计。将日期存储为date
,没有更好的数据类型,而varchar
是迄今为止最差的数据类型。我可以向您保证,2010年1月4日不是2020年12月1日之后,但这是根据您描述的数据。@kakas11如果不显示实际数据,您将创建一个小的测试查询来演示问题。不管怎样,只要不包含敏感的列,您对几乎不敏感的日期列最感兴趣。@kakas11,您不能修改表是有道理的。然而,这里的一个解决方法是尝试用精确的列类型作为所讨论的数据来重现创建示例表(在您可以使用的数据库中)的问题。上面其他评论者关于查看数据库数据类型的技术文档的建议也是一个好主意。另外,你把这个问题标记为“Alteryx”问题。。。数据是存储在Alteryx中还是在那里显示/报告?