YY月文本的日期转换为MM / DD / YYYY

时间:2020-01-16 07:09:12

标签: sql sql-server tsql

将日期接收为<div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-sm pt-5 pb-5"> <div class="etusivun_teksti" data-aos="fade-up"> <?php if (have_posts()) : while(have_posts()) : the_post();?> <?php the_content();?> <?php endwhile; endif;?> </div> </div> <div class="col-sm etusivun_kuva"></div> </div> </div> </div> ,并需要将其转换为"19-May"'05/01/2019'"19-June"

我尝试了各种日期转换,但是没有用。

3 个答案:

答案 0 :(得分:0)

您可以尝试一下。以这种格式存储日期不是一个好习惯/建议,您应该使用适当的数据类型,该数据类型适用于此数据类型。

您应使用正确的日期时间值更新值,然后再更改数据类型。这样可以节省您的时间,并且您不需要每次都进行这些转换。

Select Try_Cast('19-May 2019' as Datetime)

OR

Select Try_Cast('19-May' + '2019' as Datetime)

要获取月份的第一个日期,请尝试以下查询。

SELECT DATEADD(month, DATEDIFF(month, 0, Try_Cast('19-May 2019' as Datetime)), 0) AS StartOfMonth

修改

要根据给定的字符串数据获取月份的第一个日期,可以使用以下查询。

declare @dateinStr varchar(20) = '19-May'
Select try_cast('01-' + Replace(@dateinStr, LEFT(@dateinStr, 3), '') + LEFT(@dateinStr, 2) as Datetime) as Date

这里是demo

答案 1 :(得分:0)

我想这两个月只能是3个字符,

Select s,
       try_Cast(concat(right(s, 3), ' 2019') as Datetime)
from
(
    values
    ('19-May'),
    ('19-Jun')
) t(s);

如果几个月真的是“六月”和“八月”,那么

select s, 
       try_cast(concat(substring(s, charindex('-',s)+1, 3), ' 2019') as date)
from
(
    values
    ('19-May'),
    ('19-June'),
    ('15-August')
) t(s);

如果您需要将其设置为mm/dd/yyyy格式,请使用101样式。

答案 2 :(得分:0)

您可以:

SELECT DATEADD(DAY, 1, EOMONTH(CONVERT(DATE, Dates + '-2019'), -1))
FROM ( VALUES ('19-May'), ('19-June') 
     ) t(Dates);