我在表格中有这样的日期
2012-08-27
2011-01-12
2011-08-27
2010-01-12
2010-08-27
给定的输入是类似" 2012年秋季"," 2015年春季"的字符串。规则是27日,总是意味着FALL,第12日总是意味着SPRING。
我需要如果给定字符串例如" 2012年秋季"输出' 2012-08-27'如果给定字符串" 2010年春季"我可以打印出这个日期' 2010-01-12'
这是我的代码,但这太长了。我可以把一年中的一年和另一个字符串中的季节。例如$year=2012
和$season=Fall
。
<?php
$string="Fall 2013";
if ($string=="Fall 2012"){
echo '2012-08-27';
}elseif ($string=="Spring 2012")
{
echo '2012-01-12';
}elseif ($string=="Fall 2013")
{
echo '2013-08-27';
}elseif ($string=="Fall 2014")
{
echo '2014-08-27';
}
?>
答案 0 :(得分:1)
尝试此功能:
function changeSeasonToDate($string) {
$season = [
'~Spring (\d{4})~' => '\1-01-12',
'~Fall (\d{4})~' => '\1-08-27',
];
foreach ($season as $pattern => $date) {
$string = preg_replace($pattern, $date, $string);
}
return $string;
}
使用示例:
echo changeSeasonToDate('Spring 2013'); # 2013-01-12
echo changeSeasonToDate('Fall 2015'); # 2015-08-27
答案 1 :(得分:0)
declare @input as varchar(10)
set @input = 'Fall 2011'
select
id, date_column
from
tbl1
where
year(date_column) = right(@input,4)
group by
id, date_column
having
(CASE
WHEN day(date_column) = 27 Then 'Fall'
else 'Spri' End) = left(@input,4)
SELECT
id, date_column
FROM
tbl1
where
year(date_column) = right('Fall 2010',4)
group by id, date_column
having
(CASE WHEN day(date_column) = 27 Then 'Fall' else 'Spri' End) = left('Fall 2010',4)