簡體   English   中英

在更大的sql子句中使用DatePart

[英]Using DatePart in line of a larger sql clause

該語句將正確合並兩列(“ DATE”和“ TIME”)

update AllBW1 set sUserTime = 
    CAST(
    (
    STR( YEAR( [DATE] ) ) + '/' +
    STR( MONTH( [DATE] ) ) + '/' +
    STR( DAY( [DATE] ) ) + ' ' +
    (select DATENAME(hour, [TIME]))+ ':' +
    (select DATENAME(minute, [TIME])) + ':' +
    (select DATENAME(SECOND, [TIME]))
        ) as DATETIME)

    where sUserTime is null

我想對上述內容進行改進,以便用我自己的(GMT-6)替換默認時區。

我嘗試了一些變體:

    CAST((select DATEADD(hour, -6, DATENAME(hour, [TIME]))) as smalldatetime) + ':' +
and
    (select CAST(DATEADD(hour, -6, DATENAME(hour, [TIME]))) as datetime) + ':' +

並沒有獲得喜悅。

謝謝

LogParser 2.2解析到SQL表中的日志文件具有用於日期和時間的單獨字段,但是由於兩者都被格式化為數據時間字段,因此它們最終看起來像:

2012-01-04 00:00:00.000 for date (all time fields are zeroed)
2012-01-01 06:04:41.000 for time (all date field = first day of current year)

這就是查詢按原樣解析每個元素的原因。 多虧了Dems評論,我簡化了一切。 我毫不懷疑可以通過處理我已經處理過的卷進行優化:

update myTable set sUserTime = 
    (
    DATENAME(YEAR, [DATE] )  + '/' +
    DATENAME(MONTH, [DATE]  ) + '/' +
    DATENAME(DAY, [DATE] )  + ' ' +
    DATENAME(hour, (dateadd(hh, -6, [time])))+ ':' +
    DATENAME(minute, [TIME]) + ':' +
    DATENAME(SECOND, [TIME])
        ) 

    where sUserTime is null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM