我在使用datetime转换列时遇到问题,需要转换为getdate。
例如,列A(datetime,null)和该列包含一些带有getdate的正确值,并且某些值具有类似于“1900-01-01 15:32:00.000”的值。我需要帮助将值更改为常规getdate值。该列中的一些字段也有NULLS。
先谢谢, 沙什拉
答案 0 :(得分:1)
如果您希望GETDATE()的输出每次都不同,则不会存储它。
你做SELECT col1, col1, GETDATE() AS Now FROM Mytable...
没有安全的方法来区分“真实”的虚假价值与“假”价值,而没有诸如“上个月的任何事情都可以”之类的任何条件。 “1900-01-01 15:32:00.000”是有效的日期时间值
如果你的意思是“忽略只有一个时间位的值,而不是日期(01 jan 1900)那么呢:
SELECT
col1, col2,
CASE WHEN DateTimeCol <> '1900-01-01 15:32:00.000' THEN DateTimeCol ELSE GETDATE() END,
CASE WHEN DateTimeCol > '1901-01-01' THEN DateTimeCol ELSE GETDATE() END,
...
答案 1 :(得分:1)
一些事情:
GetDate()是一个返回当前日期和时间的函数。是的,它包括当前时间。
您提供的示例看起来像'纯'时间(即没有可用的日期组件)。如果这是真实的数据,那么你将以某种方式获得表格0的十进制值。####记录在该字段中。当然,您可以拥有该日期的真实数据,或者您可能刚刚为此问题发明了该示例。
最后,如果您真正想要的是摆脱时间组件以便拥有'纯'日期,请尝试转换(datetime,convert(nvarchar(50),getdate(),101))。内部转换以mm / dd / yyyy的形式创建文本,外部转换将其转换为yyyy-mm-dd 00:00:00.000
形式的日期