declare @table table (date_value varchar(10))
insert into @table values ('03/30/2022'),('20220330')
select date_value
--converted to varchar
,case
--mm/dd/yyyy pattern
when patindex('[0,1][0-9]/[0-3][0-9]/[0-9][0-9][0-9][0-9]',date_value)>0 then convert(varchar(10),convert(date,date_value,101),112)
else date_value end date_value_new
--converted to date
,case
when patindex('[0,1][0-9]/[0-3][0-9]/[0-9][0-9][0-9][0-9]',date_value)>0 then convert(date,date_value,101)
else convert(date,date_value,112) end date_value_date
from @table
9条答案
按热度按时间ewm0tg9j1#
假设你的“日期”栏实际上不是一个日期。
或
返回
hts6caw32#
可以将任何日期格式或日期时间格式转换为不带分隔符的YYYYMMDD
3zwjbxry3#
您可以执行以下操作:
7vux5j2d4#
试试这个...
f4t66c6m5#
已在SQL Server 2012中测试
https://www.w3schools.com/sql/func_sqlserver_convert.asp
u4dcyp6a6#
在SQL Server中,您可以执行以下操作:
这将尝试转换,并保留以前的值(如果可用)。
注意:我希望您学到了如何将日期存储为日期而不是字符串。
bwitn5fc7#
选择年(获取日期())* 10000 +月(获取日期())* 100 +日(获取日期())
stszievb8#
mm/dd/yyyy对应于美国标准,因此,如果使用值101转换为date,然后使用ISO日期值112转换为varchar,则会获得预期结果。
bqucvtff9#
SELECT TO_CHAR(创建时间,'YYYY-MM-DD')从表;//将任何日期格式转换为YYYY-MM-DD