将 varchar 列转换为 sql 中的日期
Converting varchar column to Date in sql
我正在使用 MSSQL 服务器。
我有一个名为 logDate 的列,它是 varchar 类型。
我必须执行类似“我必须删除超过 10 天的记录”这样的操作。
我可以使用哪个查询来执行此操作?
如何将varchar转为Date类型?
此处 logDate varchar 的格式为 ddmmyyyy
我搜索了几个链接,但我无法执行此操作。
感谢您的宝贵时间:)
您将使用 delete
。诀窍是将 logdate
转换为真实日期:
delete t
where datefromparts(right(logdate, 4), substring(logdate, 3, 2), left(logdate, 2)) < dateadd(day, -10, convert(date, getdate()));
这会将 MMDDYYYY 格式解构为年、月和日期,然后从这些组件构造日期。
注意:这是假设您实际上并不关心具体时间。
另一种转换时间的方法是使用字符串转换:
where convert(date, right(logdate, 4) + left(logdate, 4)) < dateadd(day, -10, convert(date, getdate())
这会将字符串重组为 YYYYMMDD,这是一种标准格式,可以很容易地从字符串转换为日期。
如果您只想将其转换为日期:
declare @date nvarchar(max) = '12032020'
select cast(substring(@date, 5, 4)+substring(@date, 3, 2)+substring(@date, 1, 2) AS date)
我正在使用 MSSQL 服务器。 我有一个名为 logDate 的列,它是 varchar 类型。
我必须执行类似“我必须删除超过 10 天的记录”这样的操作。
我可以使用哪个查询来执行此操作?
如何将varchar转为Date类型?
此处 logDate varchar 的格式为 ddmmyyyy
我搜索了几个链接,但我无法执行此操作。
感谢您的宝贵时间:)
您将使用 delete
。诀窍是将 logdate
转换为真实日期:
delete t
where datefromparts(right(logdate, 4), substring(logdate, 3, 2), left(logdate, 2)) < dateadd(day, -10, convert(date, getdate()));
这会将 MMDDYYYY 格式解构为年、月和日期,然后从这些组件构造日期。
注意:这是假设您实际上并不关心具体时间。
另一种转换时间的方法是使用字符串转换:
where convert(date, right(logdate, 4) + left(logdate, 4)) < dateadd(day, -10, convert(date, getdate())
这会将字符串重组为 YYYYMMDD,这是一种标准格式,可以很容易地从字符串转换为日期。
如果您只想将其转换为日期:
declare @date nvarchar(max) = '12032020'
select cast(substring(@date, 5, 4)+substring(@date, 3, 2)+substring(@date, 1, 2) AS date)