Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Can this be simplified?
Message
 
To
22/11/2018 18:58:24
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01663691
Message ID:
01663725
Views:
58
Yeah you can use Transform() to make that much simpler. Here's what I use both for proper fox dates (ie. strict date literals) or Sql Server date strings:
************************************************************************
FUNCTION TimeToCStrict
****************************************
***  Function: Returns time in strict time format or in SQL Server
***            compliant format (llSql flag set).
***      Pass: Datetime value
***    Return: strict DateTime string, or SQL Server time string
************************************************************************
LPARAMETER ltTime, llSQL

IF llSQL
  IF EMPTY(ltTime)
     RETURN "''"
  ENDIF
  
  RETURN "'" + TRANSFORM(TTOC(ltTime,1),"@R 9999-99-99 99:99:99") + "'"
ENDIF

IF EMPTY(ltTime)
   RETURN "{^}"
ENDIF

RETURN "{^" + TRANSFORM(TTOC(ltTime,1),"@R 9999-99-99 99:99:99") + "}"
+++ Rick ---


>>>>Hi,
>>>>
>>>>I have many places in my app where I use the following expression in the WHERE clause of the SQL Select. It works but what bothers me is that the expression has DTOC() and then CTOD(). I convert a date to a character and then convert the character back to date. Can it be simplified? Here is the expression:
>>>>
>>>>"MYTABLE.DATE_FLD >= CTOD('" + DTOC( dDateValue ) + "')"
>>>>
>>>>
>>>>TIA
>>>
>>>What's wrong with
>>>
>>>  MYTABLE.DATE_FLD >= dDateValue
>>>
>>>
>>>Just make sure that dDateValue variable is in scope.
>>
>>But I have to have this expression in the SQL Select expression. Here is an example (simplified):
>>
>>cWhereExpr = "MYTABLE.DATE_FLD >= CTOD('" + DTOC( dDateValue ) + "')"
>>cSqlSelect = " select * from mytable where " + cWhereExpr
>>
>
>I wrote a function that converts dates to SQL query format
>
>The function, called sqldate, looks like this:
>
>PARAMETERS pd_date
>
>LOCAL lc_date
>
>IF TYPE("pd_date") = "C"
> pd_date = CTOD(pd_date)
>ENDIF
>
>lc_date = ALLTRIM(STR(YEAR(pd_date))) + "-" + ;
> PADL(ALLTRIM(STR(MONTH(pd_date))), 2, "0") + "-" + ;
> PADL(ALLTRIM(STR(DAY(pd_date))), 2, "0")
>
>RETURN lc_date
>
>
>Then I can write:
>
>lc_querydate = sqldate(dDateValue)
>
>
>cSqlSelect = " select * from mytable where MYTABLE.DATE_FLD >= ?lc_querydate "
+++ Rick ---

West Wind Technologies
Maui, Hawaii

west-wind.com/
West Wind Message Board
Rick's Web Log
Markdown Monster
---
Making waves on the Web

Where do you want to surf today?
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform