我在表格中有一个日期,我需要每个月更新一次(也需要更改年份)。例如,格式为May2015
。有没有办法可以使用更新语句自动更新?通常这并不难,但由于月份和年份没有分开,我遇到了困难。
感谢。
答案 0 :(得分:0)
假设您无法更改表格,您可以将每个日期设置为每月的第一天,以便以DATETIME
格式提供。以下是一个示例:
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL DROP TABLE #tempTable
create table #tempTable(
vDate varchar(50)
)
insert into #tempTable (vDate) values
('May2015'),
('March2016'),
('August2014')
select
cast(
case
when left(vDate,len(vDate) - 4) = 'January' then '01'
when left(vDate,len(vDate) - 4) = 'February' then '02'
when left(vDate,len(vDate) - 4) = 'March' then '03'
when left(vDate,len(vDate) - 4) = 'April' then '04'
when left(vDate,len(vDate) - 4) = 'May' then '05'
when left(vDate,len(vDate) - 4) = 'June' then '06'
when left(vDate,len(vDate) - 4) = 'July' then '07'
when left(vDate,len(vDate) - 4) = 'August' then '08'
when left(vDate,len(vDate) - 4) = 'September' then '09'
when left(vDate,len(vDate) - 4) = 'October' then '10'
when left(vDate,len(vDate) - 4) = 'November' then '11'
when left(vDate,len(vDate) - 4) = 'December' then '12'
end + '/01/' + right(vDate,4) as date)
from
#tempTable
然后您可以使用相同的逻辑来更新您需要的内容。
答案 1 :(得分:0)
这是我附加的旧Access数据库,然后尝试使用currentdate函数来调整字符串。我知道我想使用UPDATE“fieldname”,但它必须保留在拼写的月份。知道这不是最好的做法,但这是我得到的。
答案 2 :(得分:-1)
如果还不晚,您应该更改架构以使用DATE或DATETIME而不是字符串。如果为时已晚,则应编写一个查询数据库每一行的迁移,使用日期解析库将其解析为DATE或DATETIME,并为该行更新DATE或DATETIME的新列。