且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-11-29 14:59:34

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

You may want to investigate the convert() function:

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

给予

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

将这些包裹在您的原始 SQL 中会导致非常丑陋:

Wrapping these around your original SQL gives the admittedly very ugly:

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;

您可能希望将其中的一部分移动到视图中,以降低复杂性.

You may want to move part of this into a view, just to reduce complexity.