2011-03-13 25 views

Respuesta

102

valores DateTime deben insertarse como si fueran cadenas entre comillas simples:

'20100301' 

SQL Server permite muchos formatos de fecha aceptada y debería ser el caso que la mayoría de las bibliotecas de desarrollo proporcionan una serie de clases o funciones para insertar valores de fecha y hora correctamente. Sin embargo, si usted lo está haciendo de forma manual, es importante distinguir el formato de fecha utilizando DateFormat y para utilizar el formato generalizado:

Set DateFormat MDY --indicates the general format is Month Day Year 

Insert Table(DateTImeCol) 
Values('2011-03-12') 

Al establecer el dateformat, SQL Server asume ahora que mi formato es YYYY-MM-DD en lugar de YYYY-DD-MM.

SET DATEFORMAT

SQL Server también reconoce un formato genérico que siempre se interpreta de la misma manera: por ejemplo, YYYYMMDD20110312.

Si está preguntando cómo insertar la fecha y hora actual usando T-SQL, entonces le recomendaría usar la palabra clave CURRENT_TIMESTAMP. Por ejemplo:

Insert Table(DateTimeCol) 
Values(CURRENT_TIMESTAMP) 
+1

¿Es eso correcto? Usted 'establece DateFormat MDY', pero luego dice que SQL Server ahora asume que mi formato es' YYY-MM-DD'. ¿Por qué SQL Server no espera que su formato coincida con 'Set DateFormat' y busque' MM-DD-YYYY'? No digo que esté mal (no lo sé), pero parece contrario a la intuición. – JerryOL

+3

@JerryOL - El 'Set DateFormat MDY' solo determina cómo SQL interpreta el orden del mes y el día, no el formato exacto. Puedes probarlo por ti mismo. Si llamas a 'Set DateFormat DMY',' 2011-03-12' es el 3 de diciembre. Si llama a 'Set DateFormat MDY', esa misma fecha es 12 de marzo. – Thomas

+2

@JerryOL - Por cierto, podría haber usado 'YMD' o' YDM' y obtuve el mismo efecto; sin embargo, creo que esos formatos solo son útiles si no pasas el año de cuatro dígitos. – Thomas

8

si tienes tiempo tendrán algo en mente GETDATE() sería la función de lo que busca

14

Usted tendrá que tener una columna en una tabla datetime. A continuación, puede hacer una inserción como la siguiente para insertar la fecha actual:

INSERT INTO MyTable (MyDate) Values (GetDate()) 

Si no es la fecha de hoy, entonces debería ser capaz de utilizar una cadena y specify the date format:

INSERT INTO MyTable (MyDate) Values (Convert(DateTime,'19820626',112)) --6/26/1982 

Usted no lo hace siempre necesita convertir la cadena, a menudo puede hacer algo como:

INSERT INTO MyTable (MyDate) Values ('06/26/1982') 

Y SQL Server lo resolverá por usted.

-1
myConn.Execute "INSERT INTO DayTr (dtID, DTSuID, DTDaTi, DTGrKg) VALUES (" & Val(txtTrNo) & "," & Val(txtCID) & ", '" & Format(txtTrDate, "yyyy-mm-dd") & "' ," & Val(Format(txtGross, "######0.00")) & ")" 

hacer en VB con todas las variables de tipo texto.

Cuestiones relacionadas