使用VARCHAR列的一部分作为where子句中的日期

时间:2016-02-04 15:56:10

标签: sql sql-server date

我有一个表,其中varchar列CREATED_BY具有格式为
的数据 USER - dd/MM/yyyy hh:mm

我尝试进行数据迁移,并且需要获取创建日期大于特定日期的记录,但是列的格式使这很难,所以

SELECT * FROM TABLE_NAME WHERE -- last part of CREATED_BY > SOMEDATE

2 个答案:

答案 0 :(得分:3)

好吧,由于dd/MM/yyyy hh:mm格式具有固定长度,您可以使用RIGHT函数从字符串中提取数据部分:

SELECT * 
FROM TABLE_NAME 
WHERE CONVERT(datetime, RIGHT(CREATED_BY, 16), 103) > somedate 

答案 1 :(得分:2)

您需要从字符串中提取日期:

WHERE cast(reverse ( substring ( reverse ( @string  ) , 1 , 16 ) )  as datetime) > somedate