仅更新同一表中另一个DateTime列的SQL Server DateTime列中的时间

时间:2017-07-08 14:48:30

标签: sql sql-server

我有一个包含两个namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; use Symfony\Component\Serializer\Annotation\Groups; /** * Media * * @ORM\Table(name="medias") * @Gedmo\TranslationEntity(class="AppBundle\Entity\Translation\MediaTranslation") */ class Media implements Translatable, \Serializable { /* [...] */ /** * @var string|null * * @ORM\Column(type="text", nullable=true) * @Gedmo\Translatable * @Groups({"single_media"}) */ private $description; /* [...] */ } 列的表。我想更新我的表,以便它只复制A列的时间,并仅在B列更新该时间而不更改实际日期本身。这是我的数据:

Ctrl + Shift + i

所需的输出是:

DateTime

我试图完成这项工作,但我无法弄清楚正确的语法或者是否有可能。提前感谢大家的帮助和指导。

2 个答案:

答案 0 :(得分:3)

一旦快速选项

Update YourTable
   set [Column B] = cast(cast([Column B] as date) as datetime)+cast(cast([Column A] as time) as datetime)

答案 1 :(得分:2)

在截断a的时间部分后,将时间从b添加到b

select 
    a
  , b = dateadd(second,datediff(second,convert(date,a),a),convert(datetime,convert(date,b)))
from t

rextester演示:http://rextester.com/IRTP42230

返回:

+---------------------+---------------------+
|          a          |          b          |
+---------------------+---------------------+
| 2017-07-07 16:30:00 | 2017-08-30 16:30:00 |
+---------------------+---------------------+