将datetime转换为getdate

时间:2010-12-27 15:15:41

标签: sql tsql

我在使用datetime转换列时遇到问题,需要转换为getdate。

例如,列A(datetime,null)和该列包含一些带有getdate的正确值,并且某些值具有类似于“1900-01-01 15:32:00.000”的值。我需要帮助将值更改为常规getdate值。该列中的一些字段也有NULLS。

先谢谢, 沙什拉

2 个答案:

答案 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

形式的日期