SQL Server日期格式yyyymmdd

db2dz4w8  于 2023-01-04  发布在  SQL Server
关注(0)|答案(9)|浏览(283)

我有一个varchar列,其中一些值是mm/dd/yyyy,另一些是yyyymmdd
我想将所有mm/dd/yyyy日期转换为yyyymmdd。最好的方法是什么?谢谢
表为Employees,列为DOB

ewm0tg9j

ewm0tg9j1#

假设你的“日期”栏实际上不是一个日期。

Select convert(varchar(8),cast('12/24/2016' as date),112)

Select format(cast('12/24/2016' as date),'yyyyMMdd')

返回

20161224
hts6caw3

hts6caw32#

DECLARE @v DATE= '3/15/2013'

SELECT CONVERT(VARCHAR(10), @v, 112)

可以将任何日期格式或日期时间格式转换为不带分隔符的YYYYMMDD

3zwjbxry

3zwjbxry3#

您可以执行以下操作:

Select Format(test.Time, 'yyyyMMdd')
From TableTest test
7vux5j2d

7vux5j2d4#

试试这个...

SELECT FORMAT(CAST(DOB AS DATE),'yyyyMMdd') FROM Employees;
f4t66c6m

f4t66c6m5#

Select CONVERT(VARCHAR(8), GETDATE(), 112)

已在SQL Server 2012中测试
https://www.w3schools.com/sql/func_sqlserver_convert.asp

u4dcyp6a

u4dcyp6a6#

在SQL Server中,您可以执行以下操作:

select coalesce(format(try_convert(date, col, 112), 'yyyyMMdd'), col)

这将尝试转换,并保留以前的值(如果可用)。
注意:我希望您学到了如何将日期存储为日期而不是字符串。

bwitn5fc

bwitn5fc7#

选择年(获取日期())* 10000 +月(获取日期())* 100 +日(获取日期())

stszievb

stszievb8#

mm/dd/yyyy对应于美国标准,因此,如果使用值101转换为date,然后使用ISO日期值112转换为varchar,则会获得预期结果。

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
bqucvtff

bqucvtff9#

SELECT TO_CHAR(创建时间,'YYYY-MM-DD')从表;//将任何日期格式转换为YYYY-MM-DD

相关问题