当前位置: 首页 > 面试题库 >

在SQL中将日期分为2列(日期+时间)

章岳
2023-03-14
问题内容

我正在尝试将表中的数字键转换为日期时间键。我当前的查询是:

  SELECT 
  DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
  SUBSTRING([Date],10,2)+':'+
  SUBSTRING([Date],12,2)+':'+
  SUBSTRING([Date],14,2)+'.'+
  SUBSTRING([Date],15,3))) [Date],
  [Object] AS [Dataset],
  SUBSTRING(Parms,1,6) AS [Media]
  FROM (Select CONVERT(VARCHAR(18),[Date]) [Date], 
  [Object],
  MsgId,
  Parms
  FROM JnlDataSection) A
  Where MsgID = '325' AND
  SUBSTRING(Parms,1,6) = 'V40449' 
  Order By Date DESC;

日期列显示:2013-06-22 13:36:44.403

我想将其分为两列:日期:2013-06-22

时间(删除微秒):13:36:44

任何人都可以修改我现有的查询以显示所需的输出吗?这将不胜感激。请注意:我正在使用SQL Server Management Studio 2008。


问题答案:

您可能要研究convert()函数:

  select convert(date, getdate()) as [Date], convert(varchar(8), convert(time, getdate())) as [Time]

  Date       Time
  ---------- --------
  2013-07-16 15:05:43

将这些包装在原始SQL周围确实很丑陋:

SELECT convert(date, 
      DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3)))) [Date],
  convert(varchar(8), convert(time, 
      DATEADD(HOUR,-4,CONVERT(DATETIME,LEFT([Date],8)+' '+
        SUBSTRING([Date],10,2)+':'+
        SUBSTRING([Date],12,2)+':'+
        SUBSTRING([Date],14,2)+'.'+
        SUBSTRING([Date],15,3))))) [Time],

  [Object] AS [Dataset],
  SUBSTRING(Parms,1,6) AS [Media]
  FROM (Select CONVERT(VARCHAR(18),[Date]) [Date], 
  [Object],
  MsgId,
  Parms
  FROM JnlDataSection) A
  Where MsgID = '325' AND
  SUBSTRING(Parms,1,6) = 'V40449' 
  Order By Date DESC;

您可能希望将其中的一部分移到视图中,只是为了降低复杂性。



 类似资料:
  • 问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢

  • 问题内容: 我正在尝试将日期从格式转换为SQL Server中的格式。 我正在使用以下命令 我尝试在msdn上查找受支持的样式,但没有找到完全匹配的样式。 帮助将不胜感激。 问题答案:

  • 问题内容: 我有一张关于不同资产的开/关事件的表格。我需要在不使用游标的情况下获取开始和停止事件时间的列表。 来源: 所需结果: 问题答案: 这是解决方案,带有概念验证供所有人验证。 我注意到的事件被标记为新事件。我解决了这个问题,但是这也导致我编写了一个解决方案,该解决方案允许发生一个已经开始但尚未结束的事件,因此我加入了一个开放式事件。 另外,我的解决方案在重叠的时期内有效。 讲解 我们将数据

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。